【问题标题】:python - Getting Pip to use MinGW32 on Windows?python - 让 Pip 在 Windows 上使用 MinGW32?
【发布时间】: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 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 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(链接可能不会老化)

标签: python pip mingw32


【解决方案1】:

visual studio express 2008 http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso

或者如果你是学生,你仍然可以通过dreamspark 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/

【讨论】:

  • 这不是问题的答案。 ¬_¬
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 2019-01-21
    • 2014-08-24
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多