Модуль SSL в Python недоступен (в OSX) - PullRequest
0 голосов
/ 08 октября 2019

У меня проблемы с запуском pip install в virtualenv на OSX 10.13. Я уже запустил brew install openssl и путь /usr/local/include/openssl указывает на ../opt/openssl/include/openssl. Кто-нибудь знает, как это исправить? Это начало происходить после того, как я переустановил python, используя brew install.

pip настроен в местах, где требуется TLS / SSL, однако модуль ssl в Python недоступен. Сбор подушек Не удалось получить URL-адрес https://pypi.python.org/simple/pillow/: При подтверждении SSL-сертификата возникла проблема: не удается подключиться к URL-адресу HTTPS, поскольку модуль SSL недоступен. - пропуск Не удалось найти версию, которая удовлетворяет требованию Подушка (из версий:) Не найдено соответствующего распределения для Подушки

ОБНОВЛЕНИЕ: Вот еще некоторая информация:

✗ which python
/usr/local/opt/python/libexec/bin/python
✗ which pip
/usr/local/opt/python/libexec/bin/pip
✗ python --version
Python 3.7.4
✗ pip --version
pip 19.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
✗ brew info python
python: stable 3.7.4 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5_1 (4,795 files, 100.0MB)
  Poured from bottle on 2019-10-08 at 14:39:37
/usr/local/Cellar/python/3.7.4_1 (3,903 files, 60.6MB) *
  Poured from bottle on 2019-10-08 at 14:37:10
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb

Да, у меня установлены и 3.6.5_1, и 3.7.4_1, так как мне может потребоваться переключаться между ними время от времени.

✗ brew unlink openssl
Unlinking /usr/local/Cellar/openssl/1.0.2s... 0 symlinks removed

1 Ответ

1 голос
/ 08 октября 2019

Модуль ssl, а также его базовое расширение C, похоже, являются частью формулы python:

Mac-Admin:~ admin$ python3
Python 3.7.4 (default, Sep  7 2019, 18:27:02) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> ssl
<module 'ssl' from '/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py'>
>>> import _ssl
>>> _ssl
<module '_ssl' from '/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload/_ssl.cpython-37m-darwin.so'>

, поэтому его отсутствие, скорее всего, означает повреждение установки пакета, которое brew reinstall pythonследует исправить.


Также обратите внимание, что хотя Homebrew допускает сосуществование нескольких версий, логика его установки не совсем подходит для того, чтобы альтернативные версии работали , если они не установлены через версионныеформула (и, например, регулярно удаляет старые версии в обычном brew cleanup).

Так что рассмотрите возможность использования pyenv (также доступна через brew), если вам нужно регулярно переключаться между версиями Python - или некоторые третьи-партийный кран, предлагающий версионные формулы для него.

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