【发布时间】:2013-06-16 11:28:02
【问题描述】:
这个问题已经被问了好几次了,但是你会发现以前的答案都不适合我——我觉得有些东西已经改变了,让所有旧的答案都过时了。或者至少,我处于某种边缘情况:
在 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 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 可能会解决这个问题。
【问题讨论】:
-
+1 我确实有同样的问题:有时 pip 能够找到 mingw,有时他不能。
-
你不需要所有的VS2008,你只需要windows SDK,它仍然可以下载。 microsoft.com/en-us/download/details.aspx?id=3138(链接可能不会老化)