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而失败
我该怎么办?
答案 0 :(得分:15)
从gnuwin32项目中获取openssl和libgw32c个包(下载“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%正确但可能需要对像我这样没有经验的用户做一些澄清:
仅适用于Windows用户。
安装python 2.5.2 32位 - 这对我来说是必不可少的,因为我有x64系统,我首先安装了python 2.5.2 x64,而且建议的解决方案对我来说根本不起作用,所以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文件夹的路径添加到你的环境变量“路径”你自己。
块引用 来自gnuwin32项目的openssl和libgw32c软件包(下载“开发人员文件”!)并在安装gnuwin32的地方提取它们 - 或者如果你还没有gnuwin32工具,你可以在任何地方提取它(例如“C: \ Program Files \ gnuwin32“)。在ssl库文件的“setup.py”中输入gnuwin32目录(替换第154行中的“C:\ Utils \ GnuWin32”)。
运行python setup.py build -cmingw32
(最简单的方法是触发cmd并导航到提取ssl库的目录) - 这将编译ssl库
运行python setup.py install --skip-build
进行安装
应该这样做。
我很惊讶他们这些年来没有设法将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