属性错误:模块“lib”没有属性“X509_V_FLAG_CB_ISSUER_CHECK”

问题描述 投票:0回答:17

最近由于可执行文件损坏,我不得不重新安装 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'
python google-analytics-api
17个回答
158
投票

编辑堆栈跟踪

中提到的 
crypto.py 文件 并通过使用 # 注释掉有问题的行

然后升级最新版本的 PyOpenSSL。

pip install pip --upgrade
pip install pyopenssl --upgrade

现在您可以再次重新添加注释行,它应该可以工作


78
投票

由于上述所有方法对我来说都失败了,所以我在这里使用了这个技巧: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

32
投票

我在 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

25
投票
pip3 install pyOpenSSL --upgrade

解决了我所有的问题。


12
投票
sudo apt remove python3-openssl

9
投票

在我的 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 收到此错误消息,并且无法再访问服务器。

希望它能对某人有所帮助。


7
投票

对我来说,早期的答案对我没有帮助,因为我遇到了所有 pip 命令的这个问题,甚至是

pip3 -V
。但我解决了它:

  1. 如果您需要最新版本,请从 https://pypi.org/project/pyOpenSSL/#files 获取网址。

    wget https://files.pythonhosted.org/packages/00/3f/ea5cfb789dddb327e6d2cf9377c36d9d8607af85530af0e7001165587ae7/pyOpenSSL-22.1.0-py3-none-any.whl
    
  2. 从whl文件安装pyOpenSSL。

    python3 -m easy_install pyOpenSSL-22.1.0-py3-none-any.whl
    

谢谢https://askubuntu.com/a/1429674


4
投票

今天早上我在系统更新并重新启动后尝试安装 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'

所有建议的修复方法都不适合我。

  • sudo apt删除python3-pip,然后sudo apt install python3-pip
  • sudo pip install pyopenssl --升级
  • sudo python3 -m easy_install pyOpenSSL-22.0.0-py2.py3-none-any.whl
  • sudo pip install --force-reinstall“加密==38.0.4”

我发现这个模块“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

3
投票

以下命令对我有用......

sudo pip3 安装 pyopenssl

sudo pip3 install pyopenssl --upgrade


1
投票

如果您的 pip 完全损坏,正如@sgdesmet 在评论中建议的那样,解决此问题的唯一选择是

“编辑 crypto.py 文件并使用 # 注释掉有问题的行”

没有其他解决方案适合我。


1
投票

我尝试升级 pip 并从 whl 文件安装另一个版本的

pyOpenSSL
,但这不起作用。唯一有帮助的就是删除带有 OpenSSL 模块的整个文件夹,例如
rm -rf ...python-3.8.10/lib/python3.8/site-packages/OpenSSL
,然后执行您需要的所有操作。


0
投票

如果

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

0
投票

感谢上面的答案,我能够解决同样的问题。我使用 Pipenv 来管理我的环境。升级我的加密模块后出现了问题。

修复(对我来说):

pipenv update pyOpenSSL

0
投票

对我来说,通过将 Azure 函数应用程序的 requests.txt 文件中的 Snowflake-connector-python 软件包版本从 2.7.1 更改为最新版本解决了问题。


0
投票

如果您没有

sudo
权限,则
--user
选项可能会起作用:

wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py --user
python3 -m pip install pyopenssl --upgrade --user

0
投票

我使用 Certbot 遇到了同样的问题,正确的版本不是最新的,所以: pip3 安装 pyOpenSSL==23.1.1


0
投票

如果您在使用 pip 时遇到此错误,只需 rm -rf /site-packages/OpenSSL 即可解决问题。

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