Как исправить: в pip настроены местоположения, требующие TLS/SSL, однако модуль SSL в Python недоступен.Python

Программы на Python
Ответить
Anonymous
 Как исправить: в pip настроены местоположения, требующие TLS/SSL, однако модуль SSL в Python недоступен.

Сообщение Anonymous »

Я установил python3.11 на свой новый devbox с системой Debian 9. Все идет хорошо, но когда я использую pip для установки требований, возникает ошибка. Подробности следующие.

Код: Выделить всё

➜  pip3 install virtualenv
Defaulting to user installation because normal site-packages is not writeable
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/virtualenv/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/virtualenv/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/virtualenv/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/virtualenv/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/virtualenv/
Could not fetch URL https://pypi.org/simple/virtualenv/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/virtualenv/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
ERROR: Could not find a version that satisfies the requirement virtualenv (from versions: none)
ERROR: No matching distribution found for virtualenv
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
WARNING: There was an error checking the latest version of pip.
Я думаю, что ключевое сообщение об ошибке заключается в следующем: pip настроен для местоположений, требующих TLS/SSL, однако модуль SSL в Python недоступен и

Код: Выделить всё

Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")
Я приложил много усилий:
  • переустановил Python с помощью openssl в соответствии с вопросом: 57586800
    установите другие требования в соответствии с вопросом: 45954528
  • установите доверенный хост, например:

    Код: Выделить всё

    pip config set global.trusted-host \
    "pypi.org files.pythonhosted.org pypi.python.org" \
    --trusted-host=pypi.python.org \
    --trusted-host=pypi.org \
    --trusted-host=files.pythonhosted.org
    
    
Вышеуказанные методы мне не подходят. Итак, мне интересно, что пошло не так?
Подробнее:
  • Прежде чем скомпилировать Python, я запустил:
    • Код: Выделить всё

      sudo apt install libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev libtk8.6 libgdm-dev libdb4o-cil-dev libpcap-dev
      для установки требований SSL (может быть?)
    • а затем я запускаю следующие команды для установки openssl.

    Код: Выделить всё

    cd /usr/src
    curl openssl.org/source/openssl-1.0.2o.tar.gz | tar xz
    cd openssl-1.0.2o
    ./config shared --prefix=/usr/local/
    sudo make
    sudo make install
    
  • Я обнаружил, что Python2.7 по умолчанию работает хорошо, а Python3 — нет

    Код: Выделить всё

    ➜  ~ python3 -V
    Python 3.11.3
    ➜  ~ python3 -c "import ssl; print(ssl.OPENSSL_VERSION_INFO)"
    Traceback (most recent call last):
    File "", line 1, in 
    File "/usr/local/lib/python3.11/ssl.py", line 100, in 
    import _ssl  # if we can't import it, let the error propagate
    ^^^^^^^^^^^
    ModuleNotFoundError: No module named '_ssl'
    ➜  ~ python -V
    Python 2.7.13
    ➜  ~ python -c "import ssl; print(ssl.OPENSSL_VERSION_INFO)"
    (1, 1, 0, 12, 15)
    
  • Версия openssl, необходимая для Python3.10+, должна быть выше 1.1.1(

    Код: Выделить всё

    Note PEP-644 which requires OpenSSL >= 1.1.  1 is released in Python 3.10
    )? Но openssl в моем Debian9 — 1.0.2o.

    Код: Выделить всё

    ➜  which openssl
    /usr/local/bin/openssl
    ➜  openssl version
    OpenSSL 1.0.2o  27 Mar 2018
    
    Я обновил openssl до 3.0 и пересобрал python3.10, тоже не работает.
  • Использование pyenv для установки Python также не помогает. Возникла ошибка: требование «_ssl» не удовлетворено.
================= =====================
Наконец, я переустанавливаю систему с debian9 на debian10. Версия openssl по умолчанию — OpenSSL 1.1.1n. Все ошибки исчезают.
Проблема устранена.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ever-the-s
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»