使用 Pip 安装 Python 包时如何使用 MinGW 的 gcc 编译器?
Posted
技术标签:
【中文标题】使用 Pip 安装 Python 包时如何使用 MinGW 的 gcc 编译器?【英文标题】:How to use MinGW's gcc compiler when installing Python package using Pip? 【发布时间】:2011-03-18 20:33:23 【问题描述】:我配置了 MinGW 和 distutils,所以现在我可以使用以下命令编译扩展:
setup.py install
将使用 MinGW 的 gcc 编译器并安装软件包。为此,我安装了 MinGW 和 created distutils.cfg 文件,内容如下:
[build]
compiler = mingw32
这很酷,但现在我想使用所有 pip 好处。有没有办法在 pip 中使用相同的 MinGW 的 gcc 编译器?所以当我运行这个时:
pip install <package name>
pip 是否会使用 MinGW 的 gcc 编译器并在需要时编译 C 代码?
目前我收到此错误:Unable to find vcvarsall.bat
。似乎 pip 不知道我有 gcc 编译器。如何配置 pip 使用 gcc 编译器?
【问题讨论】:
另一个提示:确保文件名为 distutils.cfg 而不是 distutils.cfg.txt。有时 Windows 喜欢在您创建新文本文件时添加 .txt 扩展名。 【参考方案1】: 安装 MinGW 并选中 C++ 编译器选项 将C:\MinGW\bin
添加到您的路径
在PYTHONPATH\Lib\distutils
中,创建一个文件distutils.cfg
并添加以下行:
[build]
compiler=mingw32
【讨论】:
distutils.cfg 文件的创建为我解决了这个问题 - 我试图用 pip 安装一个包并得到可怕的“无法找到 vcvarsall.bat”错误。谢谢。 请记住,如果您使用虚拟环境中的 python,您应该更改它。 谢谢。还是很乏味。如果只有 Pip 有--compiler
选项 github.com/pypa/pip/issues/18 请权衡
请注意,如果您使用的是 virtualenv,则需要单独更改 distutils.cfg -- 这是我的问题!
我在 64 位计算机上安装了 Windows 8.1。尝试上述操作后,我收到错误:error: You should not use mingw32 for gcc >= 4.6.0. Use mingw64 instead, e.g.:python setup.py build_ext -c mingw64
我将 distutils.cfg 文件中的[build]
条目更改为读取compiler=mingw32
并成功。【参考方案2】:
尽管配置文件解决了这个问题,但它并不总是一种选择。我在命令行安装过程中遇到了同样的问题,我无法更改所有机器和 python 发行版上的配置文件。
这是我的解决方案:
对于 mingw32 和默认使用 VC++ 的包:
pip install --global-option build_ext --global-option --compiler=mingw32 <package_zip>
对于 WinPython 上的 Visual C++,默认使用 mingw32:
pip install --global-option build_ext --global-option --compiler=msvc <package_zip>
【讨论】:
我们在哪里可以获得以上是关于使用 Pip 安装 Python 包时如何使用 MinGW 的 gcc 编译器?的主要内容,如果未能解决你的问题,请参考以下文章
在安装seaborn等包时,使用pip install安装不成功
ModuleNotFoundError:尝试为 Django 安装 Python 包时没有名为“pip.download”的模块