使用Pip安装Python包时如何使用MinGW的gcc编译器?

dem*_*exx 63 python windows distutils mingw pip

我配置了MinGW和distutils所以现在我可以使用这个命令编译扩展:

setup.py install
Run Code Online (Sandbox Code Playgroud)

将使用MinGW的gcc编译器并安装包.为此,我安装了MinGW并创建了distutils.cfg文件,其中包含以下内容:

[build]
compiler = mingw32
Run Code Online (Sandbox Code Playgroud)

这很酷,但现在我想使用所有的点数好处.有没有办法在pip中使用相同的MinGW的gcc编译器?这样当我运行时:

pip install <package name>
Run Code Online (Sandbox Code Playgroud)

如果需要,pip将使用MinGW的gcc编译器并编译C代码?

目前我收到此错误:Unable to find vcvarsall.bat.似乎pip并不知道我有gcc编译器.如何配置pip使用gcc编译器?

Syl*_*Syl 92

  • 安装MinGW并选中C++ Compiler选项
  • 添加C:\MinGW\bin到你的PATH
  • PYTHONPATH\Lib\distutils,创建一个文件distutils.cfg并添加以下行:

C:\MinGW\bin

  • 请记住,如果你使用的话,你应该在你的virtualenv中更改python. (13认同)
  • 谢谢.仍然乏味.如果只有Pip有一个`--compiler`选项https://github.com/pypa/pip/issues/18请称重 (6认同)
  • 请注意,如果你使用virtualenv,你有一个单独的distutils.cfg来改变 - 这是我的问题! (4认同)
  • distutils.cfg文件的创建是为我解决了这个问题 - 我试图用pip安装一个包,并得到了可怕的"无法找到vcvarsall.bat"错误.谢谢. (3认同)
  • 我在 64 位计算机上安装了 Windows 8.1。尝试上述操作后,我收到错误:`错误:您不应将 mingw32 用于 gcc &gt;= 4.6.0。使用 mingw64 代替,例如:python setup.py build_ext -c mingw64` 我更改了 distutils.cfg 文件中的 `[build]` 条目以读取 `compiler=mingw32` 并取得了成功。 (2认同)

Ant*_*n K 16

尽管配置文件解决了这个问题,但它并不总是一个选项.我的命令行安装过程遇到了同样的问题,我无法在所有机器和python发行版上更改配置文件.

这是我的解决方案:

对于mingw32和包,它们使用VC++作为默认值:

pip install --global-option build_ext --global-option --compiler=mingw32 <package_zip>
Run Code Online (Sandbox Code Playgroud)

对于WinPython上的Visual C++,它使用mingw32作为默认值:

pip install --global-option build_ext --global-option --compiler=msvc <package_zip>
Run Code Online (Sandbox Code Playgroud)

  • 我们在哪里可以得到 &lt;package_zip&gt; ?是whl文件吗? (3认同)