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

标签 python macos python-requests buildout py2app

我正在为 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

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

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

这只会在我运行打包的应用程序时发生。有什么想法吗?

最佳答案

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

setup(
   ...
   options={
      'py2app':{
          'packages': [ 'requests' ]
       }
   }
)

这包括整个包到应用程序包中,包括证书包。

我已经申请了 issue for this in my py2app tracker , future 版本的 py2app 将包含检测请求库使用的逻辑,并将自动复制证书包。

关于python - 打包为 OS X .app 时请求中的 SSLError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072124/

相关文章:

python - 鼠标事件中的 tkinter wait_variable

linux - 从日志中检查MAC

macos - Null 传递给需要非空参数的被调用者

python - 使用 python-requests 模块更新 session 中的 Cookie

python - 通过python上传文件到imgur

Python、线程和请求 : What happens when I make concurrent requests in one session?

python - 在 Windows 上使用 Pip Python 安装 TensorFlow

python - 使用 OpenCV 在 Python 中反转图像

c# - 运算符优先级

macos - Mac OSX 10.6.7 上的链接错误