当我跑步时,我的版本为1.0.2k。
openssl version -a
OpenSSL 0.9.8zg 14 July 2015
但是当我用python检查版本时;
python -c'import ssl;打印(ssl.OPENSSL_VERSION)'
我得到pip 10.0.1 from /Library/Python/2.7/site-packages/pip (python 2.7)
如何链接最新的openssl版本? 我的点子版本是;
[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)
当我尝试使用PIP安装某些模块时,出现.order(-SocialNotification.date, SocialNotification.key)
错误。所以试图在python中升级我的ssl版本
如何使我的系统Openssl版本与virtualenv版本相同?
答案 0 :(得分:1)
如何链接最新的openssl版本?
仅当从源代码编译Python时才可行;如here所述,通过CPPFLAGS
/ LDFLAGS
/ LD_LIBRARY_PATH
环境变量设置要编译/链接的OpenSSL头文件和库的位置。不过,一旦编译,就无法“重新链接”代码。
另一个问题是,如果不进行一些危险的系统修改,您将无法在MacOS中更改系统Python。 MacOS预先安装的Python位于/System/Library/Frameworks/Python.framework
下,并且您不能在/System
下修改或删除任何内容,而无需关闭系统完整性保护(我强烈建议不要这样做)。
因此,建议的解决方案是将系统Python保持原样,并安装另一个副本供自己使用。在MacOS上,通常有两种选择:使用提供最新Python 2和3版本的Homebrew,或使用https://www.python.org/downloads/中的官方.pkg
安装程序。两者都是针对最新版本的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
对于通过官方.pkg
安装程序安装的Python:配置文件应在安装时自动修改;但是,再次检查并没有什么坏处。打开~/.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版本附加它们。
答案 1 :(得分:0)
你真的不想捣乱系统Python。它构建为可在需要时与您的操作系统配合使用。
如果您需要使用Python进行更新的OpenSSL构建,请使用brew或macports或python.org软件包来安装更新的Python 2或3版本并使用它们。
(作为参考,我的brew Python 3.6 Python是针对OpenSSL 1.0.2o
构建的,作为示例)