Как связать python 2.7 с последней версией openssl в MAC OS? - PullRequest
0 голосов
/ 21 мая 2018

Когда я запускаю:

$ openssl version -a

Я получаю 1.0.2k как версию:

OpenSSL 1.0.2k  26 Jan 2017
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: cc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/php5/ssl"

Но когда я проверяю версию с python:

$ python -c 'import ssl; print(ssl.OPENSSL_VERSION)'

Я получаю: OpenSSL 0.9.8zg 14 July 2015

Как я могу связать последнюю версию openssl?Моя версия pip:

pip 10.0.1 from /Library/Python/2.7/site-packages/pip (python 2.7)

Когда я пытаюсь установить некоторые модули, используя PIP, я получаю [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) ошибку.Поэтому я пытаюсь обновить мою версию ssl в python

И как сделать так, чтобы моя система Openssl версия была такой же, как в virtualenv?

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Как связать последнюю версию openssl?

Это возможно только при компиляции Python из исходного кода;расположение заголовков и библиотек OpenSSL для компиляции с / link устанавливается через CPPFLAGS / LDFLAGS / LD_LIBRARY_PATH переменных среды, как описано здесь .Вы не можете «перекомпоновать» код после его компиляции.

Другая проблема заключается в том, что вы не сможете изменить системный Python в MacOS без какой-либо опасной модификации системы.Python, предустановленный MacOS, находится в /System/Library/Frameworks/Python.framework, и вы не можете изменить или удалить что-либо в /System без отключения защиты целостности системы (я настоятельно советую не делать этого в любом случае).

Таким образом, предлагаемое решение - оставить систему Python как есть и установить другую копию для собственного использования.В MacOS у вас обычно есть два варианта: либо использовать Homebrew, который предлагает последние версии Python 2 и 3, либо использовать официальные установщики .pkg из https://www.python.org/downloads/. Оба были построены на основе OpenSSL последней версии.Что выбрать, зависит от вашего варианта использования;лично я не использую сваренный Python, потому что он не предлагает несколько версий пакета Python 3 (например, мне нужно установить 3.5 / 3.6 / 3.7 одновременно для запуска тестов).Основным недостатком установщиков .pkg является то, что установленный Python устанавливается вне любого менеджера пакетов и не будет обновляться автоматически, поэтому вы несете ответственность за его обновление самостоятельно.В худшем случае это означает загрузку нового установщика и переустановку даже при незначительном повышении версии.

После установки настройте переменную PATH для своего пользователя, чтобы вновь установленный Python предшествовал системному.Для сваренного Python откройте ~/.bash_profile и добавьте

BREW_PREFIX=$(brew --prefix)
PATH="$BREW_PREFIX/bin:$BREW_PREFIX/sbin:$PATH"
export PATH

Для Python, установленного через официальный установщик .pkg: профиль должен автоматически изменяться при установке;тем не менее, это не мешает перепроверить.Откройте ~/.bash_profile и проверьте, присутствуют ли строки, подобные

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH

;если нет, добавьте их для установленной версии Python.

0 голосов
/ 21 мая 2018

Вы действительно не хотите гадить с системой Python.Он построен как созданный для работы с вашей ОС, когда это необходимо.

Если вам требуется более свежая сборка OpenSSL с Python, используйте для установки что-то вроде brew или macports или пакетов python.org.более поздние сборки Python 2 или 3 и их использование.

(Для справки, мой brew Python 3.6 Python был построен против OpenSSL 1.0.2o, в качестве примера)

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