Проблема с версией Python и OpenSSL в OS X
Попытка решить проблему с версией OpenSSL, которую у меня есть.
Кажется, у меня есть три разных версии OpenSSL на моем Mac.
-
Python 2.7.11 имеет версию 0.9.7m:
python -c "import ssl; print ssl.OPENSSL_VERSION"
OpenSSL 0.9.7m 23 Feb 2007
-
В терминале:
openssl version
OpenSSL 1.0.1h 5 Jun 2014
-
Недавно скомпилированный/установленный:
/usr/local/ssl/bin/openssl
OpenSSL> version
OpenSSL 1.0.2h 3 May 2016
OpenSSL>
Недавно я обновил свою ОС X до 10.11.5. В этом процессе возникла проблема для ранее работающих скриптов python. Ниже приведен фрагмент сообщения об ошибке:
Сообщение об ошибке Python:
You are linking against OpenSSL 0.9.8, which is no longer *
RuntimeError: You are linking against OpenSSL 0.9.8, which is no longer support by the OpenSSL project. You need to upgrade to a newer version of OpenSSL.
(* - да, так выглядит сообщение об ошибке. Он обрезается в середине предложения.)
Приветствуются любые рекомендации по решению этой проблемы. Я бы хотел, чтобы Python ссылался на OpenSSL версии 1.0.2h по сравнению с устаревшей версией 0.9.7m.
Я пытался установить Python и OpenSSL много раз, используя различные сообщения/блоги для руководства без везения.
Ответы
Ответ 1
Вы можете установить версию python, которая использует более новую версию openssl.
Сначала вы можете brew установить новую версию открытого SSL
brew update
brew install openssl
brew link --force openssl
Вы должны увидеть более новую версию с
openssl version -a
Затем вы можете установить другую версию python, которая использует эту более новую версию openssl. Если вы используете pyenv, это будет:
CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.4.3
Дополнительную информацию об установке версии python с установленной версией opensl brew можно найти здесь: https://github.com/yyuu/pyenv/wiki/Common-build-problems
Ответ 2
Используйте это как обходной путь:
export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1
Это, по-видимому, недавняя проверка библиотеки криптографии хамама. Вы можете увидеть исходный код по адресу:
https://github.com/pyca/cryptography/blob/master/src/cryptography/hazmat/bindings/openssl/binding.py#L221
Переменная среды CRYPTOGRAPHY_ALLOW_OPENSSL_098
понижает ошибку до предупреждения об устаревании, если вы готовы принять на себя риск. Я также столкнулся с этим на OS X только в прошлый день, поэтому что-то изменилось в последнее время.
Ответ 3
Эта проблема почти убивает меня!!!!
Наконец, мой парень решил это, только понизив версию пакета "paramiko" от 2. * до 1. * (Например, 1.15.4, которую я установил) может решить!
Ответ 4
Если вы получаете You are linking against OpenSSL 1.0.0
, используйте переменную среды export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1
, чтобы обойти ее. Спасибо @braddock
Ответ 5
РЕШЕНИЕ НЕТ ХАКСЕЙ, ни одно из выше сказанного не работало для меня. Я закончил тем, что принял более простой и неосложненный подход...
- Установить python 2.7.13 с официального сайта, он фактически устанавливается как питон по умолчанию, заменяя старую систему python в целом.
https://www.python.org/downloads/mac-osx/
- Обновление версии openssl после установки python.
sudo pip install --upprade pyOpenSSL
- Вам придется переустановить все ваши модули python (потому что вы заменили python), я настоятельно рекомендую использовать pip. После того, как через несколько минут установил мой python по умолчанию, OSX был обновлен, я обновил openssl, и у меня были все мои модули (включая запуск django).