如何在Windows上安装Python ssl模块?
Google应用程序引擎启动器告诉我: 警告appengine_rpc.py:399未找到ssl模块。 如果没有ssl模块,则无法验证远程主机的身份,并且 连接可能不安全。要解决此问题,请从安装ssl模块 我下载了这个软件包,其中包含一个如何在Windows上安装Python ssl模块?,python,google-app-engine,ssl,installation,python-2.5,Python,Google App Engine,Ssl,Installation,Python 2.5,Google应用程序引擎启动器告诉我: 警告appengine_rpc.py:399未找到ssl模块。 如果没有ssl模块,则无法验证远程主机的身份,并且 连接可能不安全。要解决此问题,请从安装ssl模块 我下载了这个软件包,其中包含一个setup.py文件。我跑: python setup.py install 然后: Python was built with Visual Studio 2003; blablabla use MinGW32 然后我安装了MinGW32,现在编译不起作
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
我该怎么办?从gnuwin32项目中获取和包(下载“开发人员文件”!)并在安装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,因为我也安装了微软的编译器)。成功构建后执行setup.py install
安装ssl
我不得不对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。一个build命令正在查找的文件。我使用了AndiDog和Saxon Druce的答案,这些答案100%正确,但对于像我这样没有经验的用户可能需要一些澄清:
python setup.py build-cmingw32
(最简单的方法是启动cmd并导航到ssl库解压缩到的目录)-这将编译ssl库python setup.py install——跳过构建来安装它
事实上,我很惊讶他们这么多年来都没有将ssl库添加到app engine sdk或python安装程序中,可能是因为人们没有使用它。自从2011年9月TDM-GCC 4.6.1发布以来。TDM-GCC安装程序将下载最新的GCC版本(4.6.1),即使使用了TDM-GCC-4.5.2.exe。GCC 4.6.1将导致GCC生成错误“错误:无法识别的命令行选项'-mno cygwin'”,这是因为-mno cygwin在GCC 4.6.1中不推荐使用。为了针对Python2.5编译ssl包,我们需要使用GCC版本4.5.2 安装TDM-GCC后,您需要按照@BandingObunny的指令执行额外的步骤 3.1从下载gcc-4.5.2-tdm-1-core.zip。将文件解压缩到MinGW32文件夹中。
3.2转到SSL文件夹,然后在那里打开命令提示符。检查GCC版本(使用GCC--version)以确保它使用版本4.5.2。然后继续第4步。我已经在一个地方编译了所有说明,以使人们的生活更轻松。
您链接的openssl安装程序已经安装了libgw32c压缩文件中的部分(或全部)文件。即使按照您的说明进行操作,我在构建“ssl模块”时也遇到了同样的问题,我忘了提到您需要根据gnuwin32路径更改setup.py。编辑了答案。我还需要从ming32 libs folder中复制openssl和libgw32c libs,并从中获得帮助。当尝试构建时,我得到了
命令gcc失败:没有这样的文件或目录
。有什么想法吗?@Uri:看起来可能gcc没有安装,或者不在路径中。如果是,则可能只需要重新启动命令提示符(仅当打开命令提示符时才会拾取路径)。您可以在命令行中键入“set path”,检查mingw-bin目录(例如c:\mingw\bin)是否在您的路径中。我在win7x64中安装python,提示不使用ssl,安装setuptools,然后是pip,last:pip安装pyOpenSSL。@DienBell的评论为我解决了这个问题(Windows 8.1的干净安装,无编译环境),请参阅