正确安装Python的pyOpenSSL(Windows)

问题描述 投票:5回答:2

我正在尝试制作一个自动更新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 install gspread
2个回答
0
投票

祝你好运。在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运行时。

我的赌注是最后一点。唯一能帮助我的是用module.pyd打开相关的Dependency Walker。通常情况下,一些奇怪的问题(比如使用错误的架构找到另一个DLL)通常会成为原因。

祝好运!


-3
投票

这就是我在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%绝对确定你知道你在做什么,因为这个模块充满了地雷,龙和带激光枪的恐龙。

我必须说,这是一个非常大胆的警告

© www.soinside.com 2019 - 2024. All rights reserved.