Search code examples
pythonpython-3.xpipigraph

Unable to install igraph due to failing build for the C core


I've been trying to install igraph using pip but it keeps failing. I get the following error:

  Using cached igraph-0.9.8.tar.gz (3.6 MB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: texttable>=1.6.2 in c:\msys64\mingw64\lib\python3.9\site-packages (from igraph) (1.6.4)
Building wheels for collected packages: igraph
  Building wheel for igraph (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\msys64\mingw64\bin\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"'; __file__='"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\HP\AppData\Local\Temp\pip-wheel-6pxfcwpb'
       cwd: C:\Users\HP\AppData\Local\Temp\pip-install-nrm8rlun\igraph_85a609eb9b2b457aa62af06569648cc8\
  Complete output (65 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.mingw_x86_64-3.9
  creating build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\clustering.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\configuration.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\cut.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\datatypes.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\formula.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\layout.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\matching.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\operators.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\sparse_matrix.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\statistics.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\summary.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\utils.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\version.py -> build\lib.mingw_x86_64-3.9\igraph
  copying src\igraph\__init__.py -> build\lib.mingw_x86_64-3.9\igraph
  creating build\lib.mingw_x86_64-3.9\igraph\app
  copying src\igraph\app\shell.py -> build\lib.mingw_x86_64-3.9\igraph\app
  copying src\igraph\app\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\app
  creating build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\baseclasses.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\colors.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\coord.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\edge.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\graph.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\metamagic.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\shapes.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\text.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\utils.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\vertex.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  copying src\igraph\drawing\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
  creating build\lib.mingw_x86_64-3.9\igraph\remote
  copying src\igraph\remote\gephi.py -> build\lib.mingw_x86_64-3.9\igraph\remote
  copying src\igraph\remote\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\remote
  running build_ext
  running build_c_core
  -- Building for: NMake Makefiles
  -- Setting build type to 'Release' as none was specified.
  -- Version number: 0.9.4-24-gb29e741ea
  CMake Error at CMakeLists.txt:30 (project):
    Running

     'nmake' '-?'

    failed with:

     The system cannot find the file specified


  CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
  CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
  -- Configuring incomplete, errors occurred!
  See also "C:/Users/HP/AppData/Local/Temp/pip-install-nrm8rlun/igraph_85a609eb9b2b457aa62af06569648cc8/vendor/build/igraph/CMakeFiles/CMakeOutput.log".
  We are going to build the C core of igraph.
    Source folder: vendor\source\igraph
    Build folder: vendor\build\igraph
    Install folder: vendor\install\igraph

  Configuring build...
  Build failed for the C core of igraph.

  ----------------------------------------
  ERROR: Failed building wheel for igraph
  Running setup.py clean for igraph
Failed to build igraph
Installing collected packages: igraph
    Running setup.py install for igraph ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\msys64\mingw64\bin\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"'; __file__='"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\HP\AppData\Local\Temp\pip-record-vzu8m8eh\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\msys64\mingw64\include\python3.9\igraph'
         cwd: C:\Users\HP\AppData\Local\Temp\pip-install-nrm8rlun\igraph_85a609eb9b2b457aa62af06569648cc8\
    Complete output (65 lines):
    running install
    C:\msys64\mingw64\lib\python3.9\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    running build_py
    creating build
    creating build\lib.mingw_x86_64-3.9
    creating build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\clustering.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\configuration.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\cut.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\datatypes.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\formula.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\layout.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\matching.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\operators.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\sparse_matrix.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\statistics.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\summary.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\utils.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\version.py -> build\lib.mingw_x86_64-3.9\igraph
    copying src\igraph\__init__.py -> build\lib.mingw_x86_64-3.9\igraph
    creating build\lib.mingw_x86_64-3.9\igraph\app
    copying src\igraph\app\shell.py -> build\lib.mingw_x86_64-3.9\igraph\app
    copying src\igraph\app\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\app
    creating build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\baseclasses.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\colors.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\coord.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\edge.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\graph.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\metamagic.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\shapes.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\text.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\utils.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\vertex.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    copying src\igraph\drawing\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\drawing
    creating build\lib.mingw_x86_64-3.9\igraph\remote
    copying src\igraph\remote\gephi.py -> build\lib.mingw_x86_64-3.9\igraph\remote
    copying src\igraph\remote\__init__.py -> build\lib.mingw_x86_64-3.9\igraph\remote
    running build_ext
    running build_c_core
    -- Version number: 0.9.4-24-gb29e741ea
    CMake Error at CMakeLists.txt:30 (project):
      Running

       'nmake' '-?'

      failed with:

       The system cannot find the file specified


    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
    CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
    -- Configuring incomplete, errors occurred!
    See also "C:/Users/HP/AppData/Local/Temp/pip-install-nrm8rlun/igraph_85a609eb9b2b457aa62af06569648cc8/vendor/build/igraph/CMakeFiles/CMakeOutput.log".
    We are going to build the C core of igraph.
      Source folder: vendor\source\igraph
      Build folder: vendor\build\igraph
      Install folder: vendor\install\igraph

    Configuring build...
    Build failed for the C core of igraph.

    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\msys64\mingw64\bin\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"'; __file__='"'"'C:\\Users\\HP\\AppData\\Local\\Temp\\pip-install-nrm8rlun\\igraph_85a609eb9b2b457aa62af06569648cc8\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\HP\AppData\Local\Temp\pip-record-vzu8m8eh\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\msys64\mingw64\include\python3.9\igraph' Check the logs for full command output.

The problem has something to do with building the C core of igraph. What steps do I take to resolve this error?

My system info, if relevant:

  • HP Pavillion 14
  • Intel Core i7-1065G7 CPU
  • Windows 10 Home 21H1 64bit
  • Python 3.9.7
  • pip 21.3.1

Solution

  • tl;dr Use the official Python distribution for Windows, or use Anaconda.


    You should not use python-igraph with the Python included in MSYS2 unless you have a very good reason. This Python is not compatible with the official Python distribution on Windows, which means that you will not be able to install binary wheels from PyPI, and will need to compile everything from source. As you discovered, that is not always trivial.

    If you have a truly good reason to use this Python with igraph, the simplest way is the following:

    By going this route, you are treading in uncharted waters. Expect problems that you will need to resolve on your own.