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

时间:2010-02-14 16:48:51

标签: python google-app-engine ssl installation python-2.5

Google App Engine Launcher告诉我:

  

警告找不到appengine_rpc.py:399 ssl模块。   如果没有ssl模块,则无法验证远程主机的身份,并且   连接可能不安全。要解决此问题,请从中安装ssl模块   http://pypi.python.org/pypi/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 个答案:

答案 0 :(得分:15)

从gnuwin32项目中获取openssllibgw32c个包(下载“Developer files”!)并将它们解压缩到安装gnuwin32的地方 - 或者如果你还没有gnuwin32工具,那么你可以在任何地方提取它(例如“C:\ Program Files \ gnuwin32”)。在“setup.py”文件中输入gnuwin32目录(替换第154行中的“C:\ Utils \ GnuWin32”)。

然后您可以毫无问题地构建ssl模块。我自己测试了,使用GCC“4.3.2-tdm-2 mingw32”和命令行setup.py build -cmingw32-cmingw32强制MinGW,因为我也安装了Microsoft的编译器)。成功构建后执行setup.py install以安装ssl

答案 1 :(得分: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命令时,我遇到了很多错误:

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文件。

答案 2 :(得分:2)

我使用了AndiDog和Saxon Druce的答案,这些答案是100%正确但可能需要对像我这样没有经验的用户做一些澄清:

  1. 仅适用于Windows用户。

  2. 安装python 2.5.2 32位 - 这对我来说是必不可少的,因为我有x64系统,我首先安装了python 2.5.2 x64,而且建议的解决方案对我来说根本不起作用,所以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文件夹的路径添加到你的环境变量“路径”你自己。

  4.   

    块引用   来自gnuwin32项目的openssl和libgw32c软件包(下载“开发人员文件”!)并在安装gnuwin32的地方提取它们 - 或者如果你还没有gnuwin32工具,你可以在任何地方提取它(例如“C: \ Program Files \ gnuwin32“)。在ssl库文件的“setup.py”中输入gnuwin32目录(替换第154行中的“C:\ Utils \ GnuWin32”)。

  5. 运行python setup.py build -cmingw32(最简单的方法是触发cmd并导航到提取ssl库的目录) - 这将编译ssl库

  6. 运行python setup.py install --skip-build进行安装

  7. 应该这样做。

    我很惊讶他们这些年来没有设法将ssl库添加到app引擎sdk或python安装程序,可能是人们不使用它。

答案 3 :(得分:1)

由于TDM-GCC 4.6.1于2011年9月发布。即使使用tdm-gcc-4.5.2.exe,TDM-GCC安装程序也会下载最新的GCC版本(4.6.1)。 GCC 4.6.1将导致GCC构建错误“错误:无法识别的命令行选项'-mno-cygwin'”这是因为-mno-cygwin在GCC 4.6.1中被弃用。为了针对python 2.5编译ssl包,我们需要使用GCC版本4.5.2。

安装TDM-GCC之后,你需要从@BanditoBunny的指令中做一些额外的步骤。

3.1从http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%204.5%20series/4.5.2-tdm-1%20SJLJ/gcc-4.5.2-tdm-1-core.zip/download下载gcc-4.5.2-tdm-1-core.zip。将文件解压缩到MinGW32文件夹中 3.2转到SSL文件夹,然后在那里打开命令提示符。检查GCC版本(使用gcc --version)以确保它使用版本4.5.2。然后继续第4步。

答案 4 :(得分:1)

我已经在一个地方编制了所有说明,以使人们的生活变得轻松。 http://waqasshabbir.tumblr.com/post/18010535789/ssl-module-for-python-2-5-installation-windows-only