Python 2.5.2中的OpenSSL无法使用
我正在尝试在 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.htmlhttp://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 个回答
在 httplib.HTTPSConnection
(还有其他一些库)中支持SSL和 ssl
模块是两回事。
你可能已经为支持SSL的库启用了SSL。不过,Python 2.5没有 ssl
模块。相反,你可以使用 OpenSSL
模块,它提供了类似的功能。
如果你的代码依赖于 ssl
或 OpenSSL
模块,你可能需要稍微调整一下代码。比如:
try:
import ssl
USE_OPENSSL = False
except ImportError:
import OpenSSL
USE_OPENSSL = True
然后,你可能需要根据加载了哪个模块来区分你的代码的功能。
(如果你只需要Python 2.5,可以直接使用 import OpenSSL
。)