我在我的 ubuntu 机器上使用 python 3.6,在进行一些测试时遇到此错误:
CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography and will be removed in a future release.
...
from OpenSSL import crypto, SSL
default: File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1550, in <module>
default: class X509StoreFlags(object):
default: File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1570, in X509StoreFlags
default: CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
default: AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
对错误进行了研究。因此,我安装了 Python 3.9,然后更新替代方案以将 Python 3.9 指定为要使用的主要 Python。然后我重新安装并升级 OpenSSL 和 Cryptography。
sudo pip3 install pyOpenSSL --upgrade
sudo pip3 install cryptography --upgrade
我再次运行测试,仍然遇到同样的错误。
我决定检查 python3.9 dist-packages 文件夹 (/usr/local/lib/python3.9/dist-packages/),发现 OpenSSL 和 Cryptography 根本找不到。它们位于 /usr/local/lib/python3.6/dist-packages/。这可能是错误持续存在的原因吗?
答案1
我遇到了这个问题pyOpenSSL==19.0.0
,并能用以下方法修复它:
pip3 install pyOpenSSL --upgrade
答案2
这似乎是由于 pip 22.2.2 升级造成的。检查是否可以将 pyOpenSSL 升级到 22.0.0 来修复此问题。
如果它不起作用,请告诉我。
答案3
我遇到了同样的问题。您需要将 pip 更新到最新版本。
- 删除旧版本
sudo apt remove python3-pip
- 根据pip 安装指南, 请执行下列操作:
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
答案4
将 cryptography 升级到版本 38.0.1 后,pip 命令在我的 Linux 系统上完全损坏,我无法以任何方式修复它。我只能通过删除以下行来解决问题
“CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK”
来自文件 /usr/lib/python3/dist-packages/OpenSSL/crypto.py
太棒了! 之后,pip 又可以工作了,我可以将加密降级到与 pyOpenSSL==20.0.1 兼容的版本:
pip 卸载加密
pip install--升级加密==36.0.2