модуль «lib» не имеет атрибута «X509_V_FLAG_CB_ISSUER_CHECK»

Я использовал python 3.6 на своей машине с Ubuntu и столкнулся с этой ошибкой при проведении некоторых тестов:

      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 и криптографию.

      sudo pip3 install pyOpenSSL --upgrade
sudo pip3 install cryptography --upgrade

Я снова запускаю тестирование и все еще сталкиваюсь с той же ошибкой.

Я решил проверить папку dist-packages python3.9 (/usr/local/lib/python3.9/dist-packages/) и понял, что OpenSSL и криптография нигде не найдены. Вместо этого они находятся в /usr/local/lib/python3.6/dist-packages/. Может из-за этого ошибка сохраняется?

13 ответов

я столкнулся с этим с pyOpenSSL==19.0.0и смог исправить это с помощью

      pip3 install pyOpenSSL --upgrade

Кажется, это связано с обновлением pip 22.2.2. Проверьте, можете ли вы обновить pyOpenSSL до версии 22.0.0, чтобы устранить проблему.

Дайте мне знать, если это не работает.

У меня была такая же проблема и

      sudo apt remove python3-pip 
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

исправил это для меня

Мой пип перестал работать из-за проблемы (я даже не смог получить версию).

Я решил эту проблему, загрузив проблемный пакет с pypi.org и обновив его через модуль easy_install :

      python3 -m easy_install pyOpenSSL-22.0.0-py2.py3-none-any.whl

После обновления криптографии до версии 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 --upgrade криптография ==36.0.2

Была такая же ошибка. Обновлен пакет pyOpenSSL до версии 22.0.0. Теперь работает нормально.

pyOpenSSL< 22.0.0 кажется несовместимым, так как они не закрепили пакет. С момента последнего cryptographyпакет был установлен в версии до 22.0.0, они просто ломаются.

Соответствующая проблема Github: https://github.com/pyca/pyopenssl/issues/1143

Предупреждение!!!если вы используете pyOpenSSL==20.0.1 и обнаруживаете эту ошибку при создании нового образа контейнера. Обновление до pyOpenSSL==22.0.0 может решить эту проблему, но может увеличить нагрузку на ЦП. Это приводит к потере 50% запросов в секунду для нашей системы, в которой работает система запросов и загрузки с большой нагрузкой.

Наконец, мы откатываем pyOpenSSL==22.0.0 до pyOpenSSL==20.0.1 и вручную устанавливаем cryptography==36.0.2, чтобы решить проблему.

Я исправил это, удалив каталог пакета python openSSL.

      sudo rm -R /usr/lib/python3/dist-packages/OpenSSL

Затем просто установите библиотеку OpenSSL еще раз.

      pip3 install pyOpenSSL --upgrade

Обратите внимание: когда я говорю «в какой ситуации мы сейчас находимся», я имею в виду тот факт, что каждый выпуск pyOpenSSL до версии 22.0.0 несовместим с версиями криптографии от 38.0.0, но pip этого не знает, поэтому не может правильно решить проблему зависимости.

https://github.com/pyca/pyopenssl/issues/1143#issuecomment-1246086105

В моем случае в моей Ubuntu 20.04 установлена ​​версия pyOpenSSL 19.0.0, а версия криптографии — 38.0.3.

Во- первых, закомментируйте строку ниже/usr/lib/python3/dist-packages/OpenSSL/crypto.py

      CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK

Затем запустите приведенные ниже команды, чтобы обновить pip3 и pyopenssl.

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

Наконец, раскомментируйте строку в первом шаге. Теперь вы сможете использовать pip3

У меня была такая же проблема. Когда это происходит, я видел такой журнал.

      Oct 26 00:59:45 d51307 certbot[4185368]:     from OpenSSL import crypto, SSL
Oct 26 00:59:45 d51307 certbot[4185368]:   File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module>
Oct 26 00:59:45 d51307 certbot[4185368]:     class X509StoreFlags(object):
Oct 26 00:59:45 d51307 certbot[4185368]:   File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
Oct 26 00:59:45 d51307 certbot[4185368]:     CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
Oct 26 00:59:45 d51307 certbot[4185368]: AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
Oct 26 00:59:45 d51307 systemd[1]: certbot.service: Main process exited, code=exited, status=1/FAILURE

Тогда я пытаюсьapt remove python3-pipиapt install python3-pipи мне помогает. Тогда я бегуcertbotи это работает

Мне удалось решить эту проблему, понизив библиотеку криптографии с помощью следующей команды.

pip установить криптографию ==36.0.0

Другие вопросы по тегам