使用 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 &gt;= 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>

【讨论】:

我们在哪里可以获得 ?是whl文件吗? 是一个压缩的 pip 包,里面有源代码,需要编译。你可以从pypi.org下载很多

以上是关于使用 Pip 安装 Python 包时如何使用 MinGW 的 gcc 编译器?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pip 安装 python 包时星号 * 的用途是啥

在安装seaborn等包时,使用pip install安装不成功

ModuleNotFoundError:尝试为 Django 安装 Python 包时没有名为“pip.download”的模块

卸载包时如何在 pipenv 中自动删除依赖的 Python 包?

在Mac系统下python如何安装第三方函数库?

在Mac系统下python如何安装第三方函数库?