如何在MAC OS中链接python 2.7和最新的openssl版本?

时间:2018-05-21 01:11:14

标签: python python-2.7 openssl

当我跑步时,我的版本为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版本相同?

2 个答案:

答案 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构建的,作为示例)