PyOpenSSL с ошибкой ffi.from_buffer (b "") - PullRequest
1 голос
/ 19 февраля 2020

Невозможно импортировать или даже установить что-либо с помощью pip после установки pyopenssl. Получение следующей ошибки

***Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 11, in <module>
    sys.exit(main())
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 665, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/cli/req_command.py", line 15, in <module>
    from pip._internal.index.package_finder import PackageFinder
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/index/package_finder.py", line 21, in <module>
    from pip._internal.index.collector import parse_links
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_internal/index/collector.py", line 12, in <module>
    from pip._vendor import html5lib, requests
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_vendor/requests/__init__.py", line 97, in <module>
    from pip._vendor.urllib3.contrib import pyopenssl
  File "/home/srnadmin/.local/lib/python3.5/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/crypto.py", line 15, in <module>
    from OpenSSL._util import (
  File "/usr/local/lib/python3.5/dist-packages/OpenSSL/_util.py", line 152, in <module>
    with ffi.from_buffer(b""):
TypeError: from_buffer() cannot return the address of the raw string within a bytes or unicode or bytearray object***

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Работает

rm -rf /usr/local/lib/python3.5/dist-packages/OpenSSL/

pip3 удалить pyopenssl

easy_install pyopenssl

0 голосов
/ 06 мая 2020

Это случилось и со мной. (Я использую Python 3.7 на MacOS Catalina с Anaconda).

Так что, очевидно, это проблема с любым модулем cryptography. Даже pip uninstall не работал.

Вы можете использовать эту ссылку , чтобы узнать местоположение криптографического пакета и удалить его. После удаления просто наберите pip install --upgrade cryptography, и все будет работать нормально.

Но в моем случае это не сработало. Итак, вот что я сделал:

  1. Активируйте свою среду, в которой есть эта проблема. Это можно сделать с помощью conda activate <env_name> или source <path_to_env>/bin/activate. (Если env отсутствует, просто пропустите этот шаг)
  2. Далее выполните where python или просто conda info --envs, если вы используете anaconda. Это должно дать вам путь к исполняемому файлу python. В моем случае это был ~/opt/anaconda3 как вывод для conda info --envs.

  3. Далее просто cd в этот каталог и затем удалите (или переместите его куда-нибудь еще, если вы хотите резервное копирование) папка ~/opt/anaconda3/bin/python/cryptography. Или вы можете даже сделать find . | grep cryptography после cd в определенной папке env, чтобы узнать точное местоположение пакета.

  4. Далее выполнить pip install --upgrade cryptography. В случае, если это не сработало, вы можете попробовать то же самое с пакетом pyopenssl.

Надеюсь, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...