繁体   English   中英

OS X 上的 Python 和 OpenSSL 版本参考问题

[英]Python and OpenSSL version reference issue on OS X

试图解决我遇到的 OpenSSL 版本问题。

我的 Mac 上似乎有三个不同版本的 OpenSSL。

  1. Python 2.7.11 版本为 0.9.7m:

     python -c "import ssl; print ssl.OPENSSL_VERSION" OpenSSL 0.9.7m 23 Feb 2007
  2. 在航站楼:

     openssl version OpenSSL 1.0.1h 5 Jun 2014
  3. 最近编译/安装:

     /usr/local/ssl/bin/openssl OpenSSL> version OpenSSL 1.0.2h 3 May 2016 OpenSSL>

我最近将我的 OS 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,但没有任何运气。

将此用作解决方法:

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 上遇到了这个问题,所以最近发生了一些变化。

您可以安装使用较新版本 openssl 的 python 版本。

首先你可以 brew install 一个新版本的 open 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

您可以在此处找到有关使用 brew 安装版本的 openssl 安装 python 版本的更多信息: https : //github.com/yyuu/pyenv/wiki/Common-build-problems

这个问题差点让我丧命! 最后,我的家伙仅通过将软件包“ paramiko”的版本从2. *降低到1。*(例如我设定的1.15.4)就可以解决该问题!

如果You are linking against OpenSSL 1.0.0使用export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1环境变量绕过它。 谢谢@braddock

解决不了任何麻烦,以上都不对我有用。 我最终采取了一种简单而不复杂的方法。

  1. 从官方站点安装python 2.7.13,它实际上是作为默认python安装的,取代了整个python系统。

https://www.python.org/downloads/mac-osx/

  1. python安装后升级openssl。

sudo pip install-升级pyOpenSSL

  1. 您将必须重新安装所有python模块(因为您替换了python),我强烈建议您使用pip。 在安装了pip几分钟后,我的默认OSX python升级了,openssl升级了,所有模块(包括正在运行的django)都安装了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM