【问题标题】:How to install Python ssl module on Windows?如何在 Windows 上安装 Python ssl 模块?
【发布时间】:2010-02-14 16:48:50
【问题描述】:

Google App Engine 启动器告诉我:

警告 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

我该怎么办?

【问题讨论】:

  • 我在win7x64中安装python并提示没有ssl,安装setuptools然后pip,最后:pip install pyOpenSSL。
  • @DienBell 的评论为我解决了这个问题(Windows 8.1 的全新安装,无编译环境)

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


【解决方案1】:

从 gnuwin32 项目中获取 openssllibgw32c 包(下载“开发人员文件”!)并将它们解压到您安装 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

【讨论】:

  • 您链接的 openssl 安装程序已经安装了 libgw32c 压缩文件中的部分(或全部)文件。
  • 即使按照您的指示,我在构建`ssl 模块时遇到了同样的问题
  • 对不起,我忘了说你需要根据你的 gnuwin32 路径更改 setup.py。编辑了答案。
  • 除了复制 ming32 libs 文件夹中的 openssl 和 libgw32c 库之外,我还必须得到 wiki.cython.org/InstallingOnWindowseli.thegreenplace.net/2008/06/28/… 的帮助
【解决方案2】:

我不得不使用对 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 文件。

【讨论】:

  • 在尝试构建时,我收到了command gcc failed: No such file or directory。有什么想法吗?
  • @Uri: 看起来 gcc 可能没有安装,或者不在路径中。如果是,那么您可能只需要重新启动命令提示符(仅在打开命令提示符时才会选择路径)。你可以在命令行输入'set path'来检查mingw bin目录(例如c:\mingw\bin)是否在你的路径中。
【解决方案3】:

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

  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. 块引用 openssl 和 gnuwin32 项目中的 libgw32c 包(下载“开发人员文件”!)并将它们提取到您安装 gnuwin32 的位置 - 或者如果您还没有 gnuwin32 工具,您可以在任何地方提取它(例如“C:\Program文件\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进行安装

应该可以的。

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

【讨论】:

    【解决方案4】:

    由于 TDM-GCC 4.6.1 于 2011 年 9 月发布。即使使用 tdm-gcc-4.5.2.exe,TDM-GCC 安装程序也会下载最新的 GCC 版本 (4.6.1)。 GCC 4.6.1 将导致 GCC 构建错误 "error: unrecognized command line option '-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 步。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2011-01-23
        • 2011-07-28
        • 1970-01-01
        • 2016-09-22
        • 2016-11-30
        相关资源
        最近更新 更多