Python 2.5.2中的OpenSSL无法使用

1 投票
1 回答
1485 浏览
提问于 2025-04-17 08:45

我正在尝试在 Python 2.5.2 中单独构建 SSL,以便生成一个独立的二进制文件,使用的命令是:

./configure
make
make altinstall(有和没有 -lssl 选项都试过)

我首先检查了我是否安装了 openSSL,包括常规版本和开发包:

$ dpkg --get-selections | grep ssl
libio-socket-ssl-perl
libnet-ssleay-perl
libssl-dev
libssl-doc
libssl1.0.0
libssl1.0.0:i386
openssl
python-openssl
ssl-cert

我下载了 Python 2.5.2,并在 Modules/Setup.dist 文件中编辑了以下几行:

_socket socketmodule.c
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

关于这个问题有很多博客文章,这里是我看到的两篇(我不能发超过两篇)- 描述了我尝试过的过程:

http://agiletesting.blogspot.com/2008/05/compiling-python-25-with-ssl-support.html
http://paltman.com/2007/11/15/getting-ssl-support-in-python-251

但是在按照上面的步骤执行 configure 和 make 后,当我运行 python2.5 测试时,出现了以下情况:

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

我基本上已经没有其他尝试的办法了 - 如果有人能提供帮助或建议我检查的内容,或者该做些什么来让它工作,我将非常感激。我知道 Python 2.7 已经有 SSL 支持,但出于其他兼容性原因,我必须使用 2.5。我正在使用 Ubuntu 11.10(Oneiric)。谢谢!

1 个回答

0

httplib.HTTPSConnection(还有其他一些库)中支持SSL和 ssl 模块是两回事。

你可能已经为支持SSL的库启用了SSL。不过,Python 2.5没有 ssl 模块。相反,你可以使用 OpenSSL 模块,它提供了类似的功能。

如果你的代码依赖于 sslOpenSSL 模块,你可能需要稍微调整一下代码。比如:

try:
    import ssl
    USE_OPENSSL = False
except ImportError:
    import OpenSSL
    USE_OPENSSL = True

然后,你可能需要根据加载了哪个模块来区分你的代码的功能。 (如果你只需要Python 2.5,可以直接使用 import OpenSSL。)

撰写回答