我正在尝试使用 SSL 作为单独的二进制文件构建 Python 2.5.2
./configure
make
make altinstall (with and without the -lssl option)
我确实首先检查了我的 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
有很多关于这个问题的博文,这里有两篇我见过(我不能发表超过 2 篇)——描述我尝试过的过程:
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
但是在按照上面的配置,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)。谢谢!
最佳答案
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
。)
关于python - Python 2.5.2 中的 OpenSSL 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585375/