如何在Windows上安装Python ssl模块?

21 投票
5 回答
42642 浏览
提问于 2025-04-15 19:16

谷歌的应用引擎启动器给我发了个警告:

警告: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 个回答

2

我参考了AndiDog和Saxon Druce的回答,这些内容是完全正确的,但对于像我这样的新手用户来说,可能需要一些解释:

  1. 这只适用于Windows用户。

  2. 安装32位的Python 2.5.2 - 对我来说这是非常重要的,因为我使用的是64位系统,最开始我安装了64位的Python 2.5.2,但提到的解决方案对我根本不管用,所以必须安装32位的。

  3. 安装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”里。

  4. 从gnuwin32项目下载 openssl 和libgw32c包(下载“开发者文件”!),并把它们解压到你安装gnuwin32的地方 - 如果你还没有gnuwin32工具,可以随便解压到任何地方(比如“C:\Program Files\gnuwin32”)。在ssl库文件的“setup.py”中输入gnuwin32的目录(把第154行的“C:\Utils\GnuWin32”替换掉)。

  5. 运行 python setup.py build -cmingw32(最简单的方法是打开命令提示符,导航到ssl库解压的目录) - 这将编译ssl库。

  6. 运行 python setup.py install --skip-build 来安装它。

这样就可以了。

我其实很惊讶这些年他们没有把ssl库添加到应用引擎sdk或Python安装程序中,可能是因为大家不怎么用吧。

9

我需要使用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文件。

15

首先,从 gnuwin32项目 下载 openssllibgw32c 这两个包(记得下载“开发者文件”哦!),然后把它们解压到你安装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 模块。

撰写回答