这已经被问过并回答了几次,但是你会发现以前的答案都不适合我 - 我觉得有些事情已经发生了变化,使得所有旧的答案都过时了。或者至少,我处于某种边缘情况:
在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%
目录中。运行setup.cfg
时,将pip
放在当前目录中。它们的内容与distutils.cfg
相同。
我知道这一切都有效,因为pip install cython
和pip 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 shell中工作但不在cmd shell中工作?
奖励:许多旧的答案建议安装Visual Studio 2008作为解决vcvarsall.bat
错误的方法。但截至今年5月,微软已不再发布此软件。有谁知道一个人仍然可以下载VS2008的地方?我问,因为能够使用vcvarsall.bat
代替MinGW可以解决这个问题。
答案 0 :(得分: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
FYI Python 33是使用Visual Studio 2010编译的。
最后,你可以从这里安装软件包:http://www.lfd.uci.edu/~gohlke/pythonlibs/
答案 1 :(得分:0)
我一直在努力解决这个问题,并发现有时候pip似乎忽略MSYS_HOME
而找不到pydistutils.cfg
,在这种情况下,唯一的办法似乎是手动复制在pydistutils.cfg
运行pip install
之前,{{1}}进入您的virtualenv。
如果有人能够明确地弄清楚为什么它有时会找到这个文件而有时却找不到,那肯定会很棒。 MinGW中的环境变量似乎过于挑剔。