这已经被问过并回答了几次,但是你会看到以前的答案都对我不起作用——我觉得有些东西已经改变了,使所有旧的答案都过时了。或者至少,我处于某种边缘情况:
在 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 可能会解决这个问题。