How to use MinGW's gcc compiler when installing Python package using Pip?
Asked Answered
C

2

71

I configured MinGW and distutils so now I can compile extensions using this command:

setup.py install

MinGW's gcc compiler will be used and package will be installed. For that I installed MinGW and created distutils.cfg file with following content:

[build]
compiler = mingw32

It's cool but now I'd like to use all pip benefits. Is there a way to use the same MinGW's gcc compiler in pip? So that when I run this:

pip install <package name>

pip will use MinGW's gcc compiler and compile C code if needed?

Currently I get this error: Unable to find vcvarsall.bat. Seems pip doesn't know that I have gcc compiler. How can I configure pip to use gcc compiler?

Childlike answered 21/7, 2010 at 7:56 Comment(1)
Another tip: make sure that the file is called distutils.cfg and not distutils.cfg.txt. Sometimes Windows likes to add the .txt extension when you make a new text file.Colossians
I
108
  • install MinGW with C++ Compiler option checked
  • add C:\MinGW\bin to your PATH
  • in PYTHONPATH\Lib\distutils, create a file distutils.cfg and add these lines:
[build]
compiler=mingw32
Intestate answered 19/2, 2011 at 14:25 Comment(5)
The distutils.cfg file creation is what solved this for me - I was trying to install a package with pip and got the dreaded "Unable to find vcvarsall.bat" error. Thanks.Flattish
Remember that you should change this for the python in your virtualenv if you use one.Amputee
Thanks. Still tedious. If only Pip had a --compiler option github.com/pypa/pip/issues/18 please weigh inMolly
Just a note, if you are using virtualenv, you have a separate distutils.cfg to change -- this was my problem!Kissiah
I have windows 8.1 on a 64 bit computer. After attempting the above I received the error : error: You should not use mingw32 for gcc >= 4.6.0. Use mingw64 instead, e.g.:python setup.py build_ext -c mingw64 I altered the [build] entry in the distutils.cfg file to read compiler=mingw32 and had success.Niche
V
23

Even though configuration file solves this problem, it's not always an option. I had the same issue for my command line installation process and I was not able to change config files on all the machines and python distributions.

This is my solution:

For mingw32 and packages, which use VC++ as default:

pip install --global-option build_ext --global-option --compiler=mingw32 <package_zip>

For Visual C++ on WinPython, which uses mingw32 as default:

pip install --global-option build_ext --global-option --compiler=msvc <package_zip>
Viable answered 9/11, 2015 at 21:21 Comment(2)
Where can we get the <package_zip> ? Is it the whl file?Adytum
<package_zip> is a zipped pip package with sources inside, which require compilation. You can download many from pypi.orgViable

© 2022 - 2024 — McMap. All rights reserved.