2013-06-19 91 views
7

這個問題已經被提出並回答了幾次,但正如你所看到的,以前的答案都不適用於我 - 我覺得有些事情已經改變,以至於所有的舊答案都已過時。或者至少,我在某種邊緣的情況下:蟒蛇 - 獲取點在Windows上使用MinGW32?

在Windows 7中,我已經安裝了MinGW32和Python 2.7(32位版本)(我也試過這與Python 2.6和得到了同樣的結果)。

  • 路徑環境變量設置正確。

  • 我編輯了cygwincompiler.py以刪除對-mno-cygwin的引用。我已將正確的distutils.cfg文件放入C:\Python27\Lib\distutils

  • 要清楚:distutils.cfg在兩行上包含[build] compiler=mingw32

  • 我也(只是爲了安全)把pydistutils.cfg放在我的%HOME%目錄中。在運行pip時,將setup.cfg放在我的當前目錄中。它們的內容與distutils.cfg相同。

我知道這是所有的工作,因爲pip install cythonpip install pycrypto都編譯成功。

然而,神祕的是,一些軟件包仍然給我unable to find vcvarsall.bat錯誤。兩個例子是:pyproj和numpy。

這就好像有時pip知道使用MinGW編譯器,有時它不?此外,如果我使用MinGW自帶的MSYS shell,那麼神奇地pip install numpy成功。但pip install pyproj仍然失敗,出現unable to find vcvarsall.bat

我試過這個在幾臺機器上都有完全相同的結果。

有人知道這裏發生了什麼嗎?爲什麼pip知道使用mingw32來編譯一些c模塊而不是其他的?另外,爲什麼pip install numpy在MSYS外殼內工作,但不在cmd外殼內?

獎金:很多很多舊的答案建議安裝Visual Studio 2008作爲解決vcvarsall.bat錯誤的一種方法。但截至今年五月,微軟不再分發這個軟件。有誰知道一個地方,仍然可以下載VS2008?我問,因爲有可能使用vcvarsall.bat而不是MinGW來解決這個問題。

+0

+1我確實有同樣的問題:有時候pip能夠找到mingw,有時他不能。 – Sam

+0

你不需要所有的VS2008,你只需要windows SDK,它仍然可以下載。 http://www.microsoft.com/en-us/download/details.aspx?id=3138(鏈接可能不會很好) –

回答

1

的Visual Studio Express 2008的http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso

或者,如果你是一名學生,你仍然可以通過的DreamSpark獲取Visual Studio 2008的https://www.dreamspark.com/

恕我直言,我建議使用Visual Studio 2008因爲Python的正式發行都是用Visual Studio編譯的,並且是cpython的「官方」windows編譯器。 http://mail.python.org/pipermail/python-list/2010-April/573606.html

僅供參考Python 33是用Visual Studio 2010編譯的。

最後,你可以只從這裏安裝軟件包:http://www.lfd.uci.edu/~gohlke/pythonlibs/

0

我這個問題了一陣掙扎,發現有時候點子似乎忽略MSYS_HOME並不能找到pydistutils.cfg,在這種情況下,只有求助似乎是在運行pip install之前手動將pydistutils.cfg複製到您的virtualenv中。

如果有人可以明確地找出爲什麼它有時會找到這個文件,有時候不能確定它會很好。 MinGW中的環境變量似乎過分挑剔。