2013-06-19 55 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中的环境变量似乎过分挑剔。