一些背景信息:
我正在尝试在python 2.5.1
(服务器编写和测试的版本)中运行服务器程序。该程序需要OpenSSL库来实现它的一些功能。我从源代码安装了python 2.5.1,因为我正在运行的Amazon Linux实例的yum存储库没有我需要的python版本。
当我尝试使用python 2.5.1运行服务器时,我收到以下导入错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named OpenSSL
我知道安装了OpenSSL库,因为我可以将它们导入Python 2.6(由yum安装的python版本)。只是我的python 2.5.1安装无法看到它们。
我也通过yum安装了pyOpenSSL而没有运气。
答案 0 :(得分: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,这可能听起来更复杂,但是如果你给它一点时间来理解它可能会在长期内更好地发挥作用。