打包为OS X时的请求中的SSLError .app

tre*_*eyk 7 python macos buildout py2app python-requests

我正在为OS X开发一个应用程序.该应用程序涉及使用安全连接通过python请求与服务器通信.

我能够运行我打算打包的python文件,并且它通过SSL连接成功.但是,当我用py2app打包文件并尝试运行它时,我收到以下错误:

Traceback (most recent call last):
File "/Users/yossi/Documents/repos/drunken-octo-nemesis/dist/drunken-octo.app/Contents/Resources/__boot__.py", line 338, in <module>
    _run()
File "/Users/yossi/Documents/repos/drunken-octo-nemesis/dist/drunken-octo.app/Contents/Resources/__boot__.py", line 333, in _run
    exec(compile(source, path, 'exec'), globals(), globals())
File "/Users/yossi/Documents/repos/drunken-octo-nemesis/dist/drunken-octo.app/Contents/Resources/media_test.py", line 16, in <module>
    cmpbl.syncWithCloud()
File "src/compare_book_lists.pyc", line 172, in syncWithCloud
File "src/compare_book_lists.pyc", line 64, in checkMediaOnCloud
File "src/get_cloud_book_list.pyc", line 26, in getCloudFulfilledBookList
File "requests/api.pyc", line 55, in get
File "requests/api.pyc", line 44, in request
File "requests/sessions.pyc", line 354, in request
File "requests/sessions.pyc", line 460, in send
File "requests/adapters.pyc", line 250, in send
requests.exceptions.SSLError: [Errno 185090050] _ssl.c:340: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
2013-06-12 11:39:49.119 drunken-octo[1656:707] drunken-octo Error
Run Code Online (Sandbox Code Playgroud)

我能够成功打包部分应用程序.当目标文件在链中的某个位置依赖于请求时,问题就开始了.

我正在使用zc.buildout来组织我的导入.因此,我在buildout创建的本地python解释器中运行,所以如果它们不涉及修改系统Python,那么任何修复都将更容易实现.但是,欢迎所有建议,我会尽力根据我的具体情况对其进行修改.

这只发生在我运行打包的应用程序时.有任何想法吗?

Ron*_*ren 6

easiests的解决方法是将py2app的选项添加到setup.py文件中:

setup(
   ...
   options={
      'py2app':{
          'packages': [ 'requests' ]
       }
   }
)
Run Code Online (Sandbox Code Playgroud)

这包括应用程序包中的整个包,包括证书包.

我已经在我的py2app跟踪器中提出了 这个问题,未来的py2app版本将包含检测请求库使用的逻辑,并将自动复制证书包.