最近由于可执行文件损坏,我不得不重新安装 python。这使得我们的 python 脚本之一爆炸并出现以下错误:
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
导致其爆炸的代码行是:
from apiclient.discovery import build
我尝试了 pip 卸载和 pip 升级 google-api-python-client 但我似乎找不到有关此特定错误的任何信息。
对于它的价值 - 我正在尝试通过 API 调用提取谷歌分析信息。
这是命令提示符错误的输出
File "C:\Analytics\Puritan_GoogleAnalytics\Google_Conversions\mcfTest.py", line 1, in <module>
from apiclient.discovery import build
File "C:\ProgramData\Anaconda3\lib\site-packages\apiclient\__init__.py", line 3, in <module>
from googleapiclient import channel, discovery, errors, http, mimeparse, model
File "C:\ProgramData\Anaconda3\lib\site-packages\googleapiclient\discovery.py", line 57, in <module>
from googleapiclient import _auth, mimeparse
File "C:\ProgramData\Anaconda3\lib\site-packages\googleapiclient\_auth.py", line 34, in <module>
import oauth2client.client
File "C:\ProgramData\Anaconda3\lib\site-packages\oauth2client\client.py", line 45, in <module>
from oauth2client import crypt
File "C:\ProgramData\Anaconda3\lib\site-packages\oauth2client\crypt.py", line 45, in <module>
from oauth2client import _openssl_crypt
File "C:\ProgramData\Anaconda3\lib\site-packages\oauth2client\_openssl_crypt.py", line 16, in <module>
from OpenSSL import crypto
File "C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\__init__.py", line 8, in <module>
from OpenSSL import crypto, SSL
File "C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\crypto.py", line 1517, in <module>
class X509StoreFlags(object):
File "C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\crypto.py", line 1537, in X509StoreFlags
CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
编辑堆栈跟踪
中提到的
crypto.py
文件 并通过使用 # 注释掉有问题的行
然后升级最新版本的 PyOpenSSL。
pip install pip --upgrade
pip install pyopenssl --upgrade
现在您可以再次重新添加注释行,它应该可以工作
由于上述所有方法对我来说都失败了,所以我在这里使用了这个技巧:https://askubuntu.com/a/1433089/497392
sudo apt remove python3-pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
然后重新启动后:
pip install pyopenssl --upgrade
我在 Ubuntu 20.04 上安装 Flask 和 firebase-admin 时也遇到了这个错误。以下命令解决了我的问题。 首先,我使用此命令删除了 OpenSSL。
sudo rm -rf /usr/lib/python3/dist-packages/OpenSSL
sudo pip3 install pyopenssl
sudo pip3 install pyopenssl --upgrade
pip3 install pyOpenSSL --upgrade
解决了我所有的问题。
sudo apt remove python3-openssl
在我的 ubuntu“20.04.5”上我设法解决了错误:
CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK\r
重新安装以下软件包:
apt-get --reinstall install python-apt
apt-get --reinstall install apt-transport-https
apt-get install build-essential libssl-dev libffi-dev python-dev
我不使用 pip,因为我使用 ansible playbook 收到此错误消息,并且无法再访问服务器。
希望它能对某人有所帮助。
对我来说,早期的答案对我没有帮助,因为我遇到了所有 pip 命令的这个问题,甚至是
pip3 -V
。但我解决了它:
如果您需要最新版本,请从 https://pypi.org/project/pyOpenSSL/#files 获取网址。
wget https://files.pythonhosted.org/packages/00/3f/ea5cfb789dddb327e6d2cf9377c36d9d8607af85530af0e7001165587ae7/pyOpenSSL-22.1.0-py3-none-any.whl
从whl文件安装pyOpenSSL。
python3 -m easy_install pyOpenSSL-22.1.0-py3-none-any.whl
今天早上我在系统更新并重新启动后尝试安装 weasyprint 时偶然发现了这个问题。注释掉包含
的行X509_V_FLAG_CB_ISSUER_CHECK
在 /usr/lib/python3/dist-packages/OpenSSL/crypto.py 导致进一步的错误
AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
所有建议的修复方法都不适合我。
我发现这个模块“lib”没有属性“X509_V_FLAG_CB_ISSUER_CHECK”,但它没有添加到我已经知道的任何内容。我发现这个 AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms' 但对于在桌面上运行的人来说它带有警告,并且会导致严重的系统范围问题。
我尝试通过easy_install升级OpenSSL,但找不到轮子,并且有折旧警告。最终我回到@Alexandr 的评论,他说只需使用 rm 删除 OpenSSL 即可。
sudo rm -rf /usr/lib/python3/dist-packages/OpenSSL
从这里我尝试重新安装OpenSSL,但发现它已经被statsfied。也许旧包被阻塞,这就是问题的根源?
sudo pip install pyopenssl
Requirement already satisfied: pyopenssl in /usr/lib/python3/dist-packages (19.0.0)
然后我升级了 pip 并能够安装 WeasyPrint,我希望这证实我已经解决了这个问题。
pip install pip --upgrade
Successfully installed pip-22.3.1
pip install weasyprint
Successfully installed Pyphen-0.13.2 ... weasyprint-57.2 zopfli-0.2.2
以下命令对我有用......
sudo pip3 安装 pyopenssl
sudo pip3 install pyopenssl --upgrade
如果您的 pip 完全损坏,正如@sgdesmet 在评论中建议的那样,解决此问题的唯一选择是
“编辑 crypto.py 文件并使用 # 注释掉有问题的行”
没有其他解决方案适合我。
我尝试升级 pip 并从 whl 文件安装另一个版本的
pyOpenSSL
,但这不起作用。唯一有帮助的就是删除带有 OpenSSL 模块的整个文件夹,例如 rm -rf ...python-3.8.10/lib/python3.8/site-packages/OpenSSL
,然后执行您需要的所有操作。
如果
pip
/ pip3
完全损坏,并且其他选项均不起作用(如 @DarkSkull 所描述),则必须删除或注释掉 crypto.py
文件中导致问题的行。
这是一种自动化的方法:
python_openssl_crypto_file="/usr/lib/python3/dist-packages/OpenSSL/crypto.py"
search_term="CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK"
cb_issuer_check_line_number="$(awk "/$search_term/ {print FNR}" $python_openssl_crypto_file)"
sed -i "${cb_issuer_check_line_number}s/.*/ # $search_term/" $python_openssl_crypto_file
感谢上面的答案,我能够解决同样的问题。我使用 Pipenv 来管理我的环境。升级我的加密模块后出现了问题。
修复(对我来说):
pipenv update pyOpenSSL
对我来说,通过将 Azure 函数应用程序的 requests.txt 文件中的 Snowflake-connector-python 软件包版本从 2.7.1 更改为最新版本解决了问题。
如果您没有
sudo
权限,则 --user
选项可能会起作用:
wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py --user
python3 -m pip install pyopenssl --upgrade --user
我使用 Certbot 遇到了同样的问题,正确的版本不是最新的,所以: pip3 安装 pyOpenSSL==23.1.1
如果您在使用 pip 时遇到此错误,只需 rm -rf