2

一些背景信息:
我正在尝试在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。

4

1 回答 1

3

安装的 python 库特定于特定版本。所以你从 yum 安装的 pyOpenSSL 将用于系统 python。您需要为 alt 安装的 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,这听起来可能会更复杂,但如果您给它一点时间来理解它,从长远来看它可能会更好。

于 2012-06-04T17:56:44.883 回答