Search code examples
pythonpipanacondacondaeigen

How does one install pygalmesh (which depends on Eigen) on a Windows PC?


Edit: For those interested, the creator is currently working on this here.

I am trying to install pygalmesh using pip install pygalmesh, which depends on Eigen. I have downloaded Eigen, but the pip installer does not "know" this. It returns the following error message:

ERROR: Could not build wheels for pygalmesh which use PEP 517 and cannot be installed directly

more specifically:

fatal error C1083: Cannot open include file: 'Eigen/Dense':

Pygalmesh's github has a file for setup.py which I could edit, but I don't know how I would then install pygalmesh. Still with pip?

Is there a setup.py file I can edit so that the installer knows where Eigen/Dense is located? Since I have a Windows PC, I at least think the / needs to be changed to \. But I cannot find a setup.py to edit.

I've found conversations about this problem elsewhere on the web, also here. I don't know how to implement what is talked about in these posts. I have also tried installing eigen through conda, like here. This also has not worked.

Error message in full:

Collecting pygalmesh
  Using cached pygalmesh-0.6.2.tar.gz (1.2 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
    Preparing wheel metadata ... done
Collecting pybind11>=2.2
  Using cached pybind11-2.5.0.tar.gz (139 kB)
Collecting meshio<5.0.0,>=4.0.0
  Downloading meshio-4.0.11.tar.gz (302 kB)
     |████████████████████████████████| 302 kB 2.2 MB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: importlib-metadata in c:\users\user\anaconda3\lib\site-packages (from pygalmesh) (1.5.0)
Requirement already satisfied: numpy in c:\users\user\anaconda3\lib\site-packages (from pygalmesh) (1.16.2)
Requirement already satisfied: zipp>=0.5 in c:\users\user\anaconda3\lib\site-packages (from importlib-metadata->pygalmesh) (2.2.0)
Skipping wheel build for pybind11, due to binaries being disabled for it.
Building wheels for collected packages: pygalmesh, meshio
  Building wheel for pygalmesh (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\User\Anaconda3\python.exe' 'C:\Users\User\Anaconda3\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\User\AppData\Local\Temp\tmpa0eqknmo'
       cwd: C:\Users\User\AppData\Local\Temp\pip-install-qm6jy0mx\pygalmesh
  Complete output (24 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.7
  creating build\lib.win-amd64-3.7\pygalmesh
  copying pygalmesh\main.py -> build\lib.win-amd64-3.7\pygalmesh
  copying pygalmesh\__about__.py -> build\lib.win-amd64-3.7\pygalmesh
  copying pygalmesh\__init__.py -> build\lib.win-amd64-3.7\pygalmesh
  creating build\lib.win-amd64-3.7\pygalmesh\_cli
  copying pygalmesh\_cli\helpers.py -> build\lib.win-amd64-3.7\pygalmesh\_cli
  copying pygalmesh\_cli\_inr.py -> build\lib.win-amd64-3.7\pygalmesh\_cli
  copying pygalmesh\_cli\_remesh_surface.py -> build\lib.win-amd64-3.7\pygalmesh\_cli
  copying pygalmesh\_cli\_volume_from_surface.py -> build\lib.win-amd64-3.7\pygalmesh\_cli
  copying pygalmesh\_cli\__init__.py -> build\lib.win-amd64-3.7\pygalmesh\_cli
  running build_ext
  building '_pygalmesh' extension
  creating build\temp.win-amd64-3.7
  creating build\temp.win-amd64-3.7\Release
  creating build\temp.win-amd64-3.7\Release\src
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I/usr/include/eigen3/ -IC:\Users\User\AppData\Local\Temp\pip-build-env-bi2kt8ry\normal\Lib\site-packages\pybind11\include -IC:\Users\User\AppData\Local\Temp\pip-build-env-bi2kt8ry\normal\Lib\site-packages\pybind11\include -IC:\Users\User\Anaconda3\include -IC:\Users\User\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.7.2\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /EHsc /Tpsrc/generate.cpp /Fobuild\temp.win-amd64-3.7\Release\src/generate.obj
  generate.cpp
  C:\Users\User\AppData\Local\Temp\pip-install-qm6jy0mx\pygalmesh\src\domain.hpp(4): fatal error C1083: Cannot open include file: 'Eigen/Dense': No such file or directory
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.22.27905\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
  ----------------------------------------
  ERROR: Failed building wheel for pygalmesh
  Building wheel for meshio (PEP 517) ... done
  Created wheel for meshio: filename=meshio-4.0.11-py3-none-any.whl size=127526 sha256=cc63c5792c3d20bce3532742afcccc100bc6312c1254e029f8771f286a5979c2
  Stored in directory: c:\users\user\appdata\local\pip\cache\wheels\17\27\cf\b034bc0b8bffd85475dfbab9791fcdeea89c77f040c4537afe
Successfully built meshio
Failed to build pygalmesh
ERROR: Could not build wheels for pygalmesh which use PEP 517 and cannot be installed directly


Solution

  • After raising the issue on the pygalmesh github, the community and creator solved the problem. See here. Simply:

    conda install -c conda-forge pygalmesh