簡體   English   中英

如何在Windows上安裝Python ssl模塊?

[英]How to install Python ssl module on Windows?

Google App Engine Launcher告訴我:

警告找不到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

我該怎么辦?

gnuwin32項目中獲取openssllibgw32c包(下載“Developer files”!)並將它們解壓縮到安裝gnuwin32的地方 - 或者如果你還沒有gnuwin32工具,你可以在任何地方提取它(例如“C:\\ Program”文件\\的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

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

我使用了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文件夾的路徑添加到環境變量“path”。

  4. 從gnuwin32項目中截取openssl和libgw32c包(下載“Developer files”!)並將它們解壓縮到你安裝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來安裝它

應該這樣做。

我真的很驚訝他們這些年來沒有設法將ssl庫添加到app引擎sdk或python安裝程序,可能是人們不使用它。

由於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 gcc-4.5.2-tdm-1-core.zip/download 將文件解壓縮到MinGW32文件夾中。
3.2轉到SSL文件夾,然后在那里打開命令提示符。 檢查GCC版本(使用gcc --version)以確保它使用版本4.5.2。 然后繼續第4步。

我在一個地方匯編了所有說明,讓人們的生活變得輕松。 http://waqasshabbir.tumblr.com/post/18010535789/ssl-module-for-python-2-5-installation-windows-only

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM