2012-06-04 47 views
2

一些背景信息:
我想运行一个服务器程序python 2.5.1(服务器的编写和测试版本)。该程序需要OpenSSL库的一些功能。我从源码安装了python 2.5.1,因为我正在运行的Amazon Linux实例的yum存储库没有我需要的python版本。如何在替代安装的Python 2.5.1中启用OpenSSL支持?

当我尝试运行使用Python 2.5.1服务器我得到下面的导入错误:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: No module named OpenSSL 

我知道OpenSSL库安装,因为我可以将它们导入的Python 2.6(版本python由yum安装)。只是我的python 2.5.1安装无法看到它们。

我也通过yum安装了pyOpenSSL,没有运气。

+0

您是否尝试追加Python 2.6的路径? – ddzialak

+0

您需要针对Python 2.5编译pyOpenSSL([see here](http://packages.python.org/pyOpenSSL/building-unix.html))。追加Python 2.6路径将无济于事。 – schlamar

回答

3

已安装的python库特定于特定版本。所以你从yum安装的pyOpenSSL将用于系统python。你需要为alt-installed 2.5 python安装一个单独的pyOpenSSL实例。

如果你使用python2.5安装distutils,那么你会发现你有一个easy_install-2.5,你可以使用:easy_install-2.5 pyopenssl(或类似)。但请注意,也可以安装easy_install的新版本,覆盖现有系统python(如果有的话)。使用distutils与现有的软件包使用easy_install-2.7(如果它是python 2.7)。

确实有道理吗?基本上,每个python都是独特的,并且需要它自己的一组库。相比之下,easy_install是全局安装的,但是每个python都有一个版本特定的easy_install副本......!

如果你想避免与easy_install混乱,你可以使用virtualenv。为2.5创建一个新的环境,启用它,并且可以在那里安装pyopenssl(使用环境中的easy_install)。如果你从未习惯过virtualenv,听起来可能会更复杂,但如果你花一点时间理解它,那么长期来看,它可能会更好。

相关问题