Python 3.7 Не удается подключиться к URL-адресу HTTPS, поскольку модуль SSL недоступен - PullRequest
0 голосов
/ 29 сентября 2018

Я нахожусь в процессе установки Python 3.7 на моем выделенном сервере с запущенным centos 6.10. Прыгнув через несколько обручей, чтобы попытаться это сделать, я обнаружил еще одну ошибку.Используя Python 3.7, чтобы попытаться оставаться в курсе, довольно часто возникает проблема с SSL при установке pip.Я пришел к выводу, что лучший способ решить эту проблему - получить правильную версию OpenSSL.Поэтому я сделал это и отредактировал мой файл python modules / Setup.dist, перенастроил его, перезапустил make altinstall, и пока все выглядело нормально.По какой-то причине команда Python3.7, которая была командой, которую я использовал для запуска этого питона раньше, внезапно стала не распознаваемой как команда, тогда как в каталоге Python3.7 была папка python, которая теперь выполнялась (после редактирования средыпуть включил Python3.7. Заранее это было не так, и это было просто Python3.7 Кто-нибудь знает, что здесь могло случиться?

Кроме того, я почти сошел с ума с этимвесь SSL, и я читал о каждой статье под солнцем, на что это похоже. Вот список некоторых команд, которые я выполнил за последнее время:

#Unpacked Python3.7 into /usr/src directory
./configure --enable-optimizations --enable-loadable-sqlite-extensions
make altinstall

#installation failed from no '_ctypes' module

yum install libffi-devel

#repeat configure above
#yaaay python
#Successfully installed pip-10.0.1 setuptools-39.0.1 was the final message of the installation

Python3.7 -m venv /my/project/directory/ENV
pip install {library}

#this is where my issues began with SSL

Журналы:

(ENV) [root@s1.1.1.1 ProjectDirectory]# pip3 install twisted
pip is configured with locations that require TLS/SSL, however, the SSL module in Python is not available.
Collecting twisted
  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/twisted/
  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/twisted/
  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/twisted/
  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/twisted/
  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/twisted/
  Could not fetch URL https://pypi.org/simple/twisted/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/twisted/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
  Could not find a version that satisfies the requirement twisted (from versions: )
No matching distribution found for twisted
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 SSLmodule is not available.")) - skipping

Так что я был в порядке, круто. Не беспокойся. Самая последняя версия Python не может даже получить pip3 прямо из коробки. Замечательно. Ну, я начал поиск в Google, как мы, и пришел к выводу, что все просто перенастраиваютих питон снова, и он волшебным образом сработал. Не знаю почему, но хорошо. Я был в нем. Я нашел эту статью:

https://techglimpse.com/install-python-openssl-support-tutorial/

Думая ок круто.Если я могу получить Python3.7 SSL, то он должен заставить pip3 работать правильно?Неправильно.К сожалению, если я запускаю Python3.7 новым странным способом, который я упомянул выше, и набираю import ssl, я получаю эту ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/src/Python-3.7.0/Lib/ssl.py", line 98, in <module>
    import _ssl             # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'

Может ли кто-нибудь помочь мне?Я как бы потерялся в океане и не умею плавать ... Все было бы замечательно, но я новичок в этом админе сервера, поэтому чем проще, тем лучше :) Спасибоadvance.

EDIT: Между прочим,

yum install openssl

и

yum install openssl-devel

оба приводят к флагу "уже установлено" ... Так что я не думаю, что этодругое решение.Однако когда я делал установку вручную, я использовал версию 1.1.1, потому что я знаю, что 3.7 по какой-то причине отказался от поддержки нескольких разных версий OpenSSL.То, что уже установлено yum - это 1.0.2, я думаю.Я не знаю, есть ли емкость для платформы centos 6.10, хотя она ограничена версией.

Ответы [ 4 ]

0 голосов
/ 22 апреля 2019

Настройка опции "--with-openssl" у меня работает

0 голосов
/ 21 февраля 2019

Я сталкивался с этим при попытке скомпилировать Python 3.7.2 для Ubuntu 18.04 LTS

Убедитесь, что у вас есть все зависимости, необходимые для сборки встроенных модулей Python.Запустите make 2>&1 | tee make.txt после configure и найдите предупреждения о модулях, которые не удалось собрать.Если модули не удастся собрать, Python не удастся установить, он просто не соберет те модули, которые приводят к типу ошибки, которую вы видите.

После установки зависимостей обязательно запустите configureеще раз.

0 голосов
/ 27 марта 2019

У меня была похожая проблема на моей Mac OS , где я не мог ничего установить или даже обновить pip из виртуальной среды из-за проблем с SSL.

Что сработало дляя делал следующее изнутри виртуальной среды

  1. sudo chown -R ${whoami} /usr/local/Cellar с последующим

  2. brew install openssl

Что такое ${whoami} в первой команде?

Это заполнитель;то, что вы должны поместить туда, когда вы запускаете команду, это ваш текущий текущий пользователь.

Если вы не знаете своего пользователя, введите в командной строке

whoami

Выход - ваш пользователь.Поэтому, если вы наберете это и получите johnsmith в качестве вывода, при запуске первой команды вы замените «${whoami}» на «johnsmith», например:

sudo chown -R johnsmith /usr/local/Cellar

0 голосов
/ 29 ноября 2018

Я не уверен, что вы уже поняли это, но вы должны убедиться, что при сборке python он может найти библиотеки openssl.

В частности: если вы не используетеСистемные библиотеки ssl или они не на вашем пути, в --configure вам нужно указать, где они находятся.Я бы дал вам точную строку, но я сам не делал этого в последнее время.Если вы сделали это правильно, вы не увидите в конце сборки отчет о том, что python пропустил сборку 'ssl' модуля.Когда вы видите сообщение об ошибке (_ssl), которое вы указали выше, это означает, что python не был создан с ним.Вы столкнетесь с той же проблемой в 3.6, если будете использовать те же шаги без изменения --configure.

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