如何在Windows上安装Python ssl模块?
谷歌的应用引擎启动器给我发了个警告:
警告:appengine_rpc.py:399 找不到 ssl 模块。没有这个 ssl 模块,就无法验证远程主机的身份,连接可能不安全。要解决这个问题,请从 http://pypi.python.org/pypi/ssl 安装 ssl 模块。
我下载了这个包,里面有一个 setup.py
文件。我运行了:
python setup.py install
然后我又运行了:
Python was built with Visual Studio 2003; blablabla use MinGW32
接着我安装了 MinGW32,但现在编译不成功。编译错误的最后部分显示:
ssl/_ssl2.c:1561: 错误: `CRYPTO_LOCK' 未声明(在这个函数中首次使用)
错误: 命令 'gcc' 失败,退出状态为 1
我该怎么办?
5 个回答
我参考了AndiDog和Saxon Druce的回答,这些内容是完全正确的,但对于像我这样的新手用户来说,可能需要一些解释:
这只适用于Windows用户。
安装32位的Python 2.5.2 - 对我来说这是非常重要的,因为我使用的是64位系统,最开始我安装了64位的Python 2.5.2,但提到的解决方案对我根本不管用,所以必须安装32位的。
安装GCC - http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1006.0/tdm-gcc-4.5.2.exe/download,我使用的是最新版本,安装时别忘了选择“添加到PATH变量”的选项,否则你得自己把GCC的bin文件夹路径加到环境变量“path”里。
从gnuwin32项目下载 openssl 和libgw32c包(下载“开发者文件”!),并把它们解压到你安装gnuwin32的地方 - 如果你还没有gnuwin32工具,可以随便解压到任何地方(比如“C:\Program Files\gnuwin32”)。在ssl库文件的“setup.py”中输入gnuwin32的目录(把第154行的“C:\Utils\GnuWin32”替换掉)。
运行
python setup.py build -cmingw32
(最简单的方法是打开命令提示符,导航到ssl库解压的目录) - 这将编译ssl库。运行
python setup.py install --skip-build
来安装它。
这样就可以了。
我其实很惊讶这些年他们没有把ssl库添加到应用引擎sdk或Python安装程序中,可能是因为大家不怎么用吧。
我需要使用AndiDog方法的以下修改:
setup.py build -cmingw32
setup.py install --skip-build
如果不加上--skip-build这个选项,安装的时候会再次尝试构建,然后又会抱怨MSVC的问题:
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
而且,最开始使用构建命令时,我遇到了很多这样的错误:
build\temp.win32-2.5\Release\ssl\_ssl2.o:_ssl2.c:(.text+0x1d): undefined reference to `_imp__PyImport_ImportModule'
build\temp.win32-2.5\Release\ssl\_ssl2.o:_ssl2.c:(.text+0x34): undefined reference to `_imp__PyObject_GetAttrString'
build\temp.win32-2.5\Release\ssl\_ssl2.o:_ssl2.c:(.text+0x53): undefined reference to `_imp__PyCObject_AsVoidPtr'
这是因为我最开始安装的是64位的Python 2.5.4版本(python-2.5.4.amd64.msi)。我把它卸载了,然后安装了32位版本(python-2.5.4.msi)。这个版本包含了构建命令需要的libpython25.a文件。
首先,从 gnuwin32项目 下载 openssl 和 libgw32c 这两个包(记得下载“开发者文件”哦!),然后把它们解压到你安装gnuwin32的地方。如果你还没有安装gnuwin32工具,也可以随便解压到其他地方,比如“C:\Program Files\gnuwin32”。接下来,打开“setup.py”文件,把第154行的“C:\Utils\GnuWin32”改成你gnuwin32的目录。
这样一来,你就可以顺利构建 ssl
模块了。我自己测试过,使用的是GCC版本“4.3.2-tdm-2 mingw32”,在命令行中输入 setup.py build -cmingw32
(-cmingw32
是为了强制使用MinGW,因为我电脑上也装了微软的编译器)。成功构建后,执行 setup.py install
来安装 ssl
模块。