如何修复 ImportError: No module named cryptography?

Eri*_*ric 5 cryptography pip certbot

我想通过 certbot 自动续订证书,但不起作用,出现错误“ImportError: No module named cryptography”

# ./certbot-auto --dry-run

错误:无法获取当前安装的 /opt/eff.org/certbot/venv/bin/letsencrypt 版本:回溯(最近一次调用):文件“/opt/eff.org/certbot/venv/bin/letsencrypt” ,第 7 行,在 from certbot.main import main 文件“/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/certbot/main.py”,第 10 行,在 import josepy as何塞文件“/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/ INIT.py”,第 41 行,来自 josepy.interfaces 导入 JSONDeSerializable 文件“/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/interfaces.py”,第 7 行,在从 josepy 导入错误,util 文件“/opt/eff.org/certbot/venv/local/lib/python2.7/dist-packages/josepy/util.py”,第 7 行,导入 OpenSSL 文件“/opt/eff .org/certbot/venv/local/lib/python2.7/dist-packages/OpenSSL/ init .py”,第 8 行,来自 OpenSSL 导入加密,SSL 文件“/opt/eff.org/certbot/venv/local /lib/python2.7/dist-packages/OpenSSL/crypto.py", line 12, in from cryptography import x509 ImportError: No module named cryptography

我尝试安装密码学,并得到了这个结果

sudo /opt/eff.org/certbot/venv/bin/pip 安装密码

您使用的是 pip 版本 9.0.1,但版本 19.2.3 可用。您应该考虑通过“pip install --upgrade pip”命令进行升级。

然后我尝试了这个命令 pip install --upgrade pip

弃用:Python 2.7 的生命周期将于 2020 年 1 月 1 日结束。请升级您的 Python,因为在该日期之后将不再维护 Python 2.7。pip 的未来版本将不再支持 Python 2.7。有关 pip 中 Python 2 支持的更多详细信息,请访问https://pip.pypa.io/en/latest/development/release-process/#python-2-support 要求已经是最新的:pip in / usr/lib/python2.7/dist-packages/pip-19.2.3-py2.7.egg (19.2.3)

如何安装密码学?

小智 15

成功安装我在运行 certbot-auto 并将其升级到新版本后收到完全相同的错误消息。

以下是我如何解决这个问题:

pip install cryptography 
cd /opt/eff.org/certbot/venv/lib64/python2.7 
mv site-packages site-packages.sav 
ln -s dist-packages/ site-packages 
Run Code Online (Sandbox Code Playgroud)

这是因为 letencrypt 的自定义版本的 python 正在寻找site-packages子文件夹下的包,而在我的情况下它是空的,并且包在dist-packages子文件夹下。

注意:如果您看到加密已成功安装,则无需运行 'pip install --upgrade pip' 命令并且可以忽略警告信息。