8

这已经被问过并回答了几次,但是你会看到以前的答案都对我不起作用——我觉得有些东西已经改变了,使所有旧的答案都过时了。或者至少,我处于某种边缘情况:

在 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 可能会解决这个问题。

4

2 回答 2

1

视觉工作室快递 2008 http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso

或者,如果您是学生,您仍然可以通过 dreampark https://www.dreamspark.com/获得 Visual Studio 2008

恕我直言,我建议使用 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/

于 2013-08-26T21:22:30.363 回答
0

我在这个问题上苦苦挣扎了一段时间,发现有时 pip 似乎忽略MSYS_HOME并且找不到pydistutils.cfg,在这种情况下,唯一的办法似乎是pydistutils.cfg在运行之前手动将 复制到您的 virtualenv 中pip install

如果有人能明确地弄清楚为什么它有时会找到这个文件而有时却没有,那肯定会很棒。MinGW 中的环境变量似乎过于挑剔。

于 2013-11-14T20:44:58.300 回答