Подтвердить что ты не робот

Проблема с версией 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 много раз, используя различные сообщения/блоги для руководства без везения.

4b9b3361

Ответ 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/

  1. Обновление версии openssl после установки python.

sudo pip install --upprade pyOpenSSL

  1. Вам придется переустановить все ваши модули python (потому что вы заменили python), я настоятельно рекомендую использовать pip. После того, как через несколько минут установил мой python по умолчанию, OSX был обновлен, я обновил openssl, и у меня были все мои модули (включая запуск django).