【问题标题】:Correctly installing pyOpenSSL for Python (Windows)正确安装 pyOpenSSL for Python (Windows)
【发布时间】:2016-05-15 21:56:33
【问题描述】:
我正在尝试制作一个自动更新 Google Plus 电子表格的应用程序。为了做到这一点,我必须设置gspread,这也需要pyOpenSSL才能工作。没有它,它会抛出这个错误:
CryptoUnavailableError:没有可用的加密库
使用pip,我输入命令:
pip install pyopenssl
并使用以下方式导入:
from OpenSSL import SSL
当我尝试运行代码时,我收到以下错误:
ImportError:没有名为 cryptography.hazmat.bindings.openssl.binding 的模块
我已尝试多次重新安装 pyOpenSSL,还尝试重新安装加密依赖项(以及尝试安装以前版本的 pyOpenSSL)。
这个问题记录了几次,但我没有尝试过的唯一解决方案是重新安装 python 或操作系统。
有什么建议吗?提前致谢。
【问题讨论】:
标签:
python
windows
openssl
installation
gspread
【解决方案1】:
祝你好运。在 Windows 上调试 ImportError 问题不适合胆小的人。
即使ImportError 引用cryptography.hazmat.bindings.openssl.binding,这也不一定是原始问题。无论出于何种原因,我经常让ImportError 跟踪另一个问题。
我会尝试的第一件事就是跑步
python -v -c "from OpenSSL import SSL"
并捕获输出。寻找接近最终错误的任何问题。
可能是以下之一:
- cffi 无法编译绑定(预编译的绑定应该由
pip install 安装,但有时会出现问题...)
- 试图导入不可用的 SSL DLL 的绑定(但也应该通过 pip install 拉取,但我不太确定)
- DLL 可用但无法加载,因为缺少某些依赖 DLL,例如 Visual Studio 运行时。
我赌的是最后一点。唯一对我有帮助的是用Dependency Walker 打开相关的module.pyd。原因往往是一些奇怪的问题(比如发现另一个具有错误架构的 DLL)。
祝你好运!
【解决方案2】:
这就是我在我的 Ubuntu 桌面上解决它的方法。在 Windows 中,您需要找出解决方案,但这个问题的真正原因在 Linux 和 Windows 中是相同的
PyOpenSSL 14.x+ 使用基于 cffi 的加密包,这可能是您的问题的原因 - cffi 需要 libffi(或 libffi-dev)系统包,这是一个新的非 Python 依赖项。
首先这样做
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
然后
pip install cryptography
注意这里的关键模块是libffi-dev..我想如果你已经安装了pip,你也可以使用apt-get而不是pip install
与此同时,这是有关 pyOpenSSL 绑定的文档
这是一个“有害物质”模块。你应该只在以下情况下使用它
你 100% 绝对确定你知道自己在做什么,因为
这个模块充满了地雷、龙和带有激光的恐龙
枪。
我必须说这是一个非常大胆的警告