如何在Windows电脑上安装pygalmesh(它依赖于Eigen)?

1 人关注

编辑:对于那些感兴趣的人来说,创作者目前正在做这个工作 here .

我正在尝试安装 pygalmesh using pip install pygalmesh , which depends on Eigen .我已经下载了Eigen,但pip安装程序并不 "知道 "这一点。它返回以下错误信息。

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

更具体地说。

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

俾尔麦斯的github有一个文件用于setup.py我可以编辑它,但我不知道我将如何安装pygalmesh. Still with pip?

有没有一个我可以编辑的setup.py文件,让安装程序知道Eigen/Dense的位置?因为我有一台Windows PC,我至少认为需要把/改成\。但我找不到可以编辑的setup.py。

我发现在其他地方有关于这个问题的对话。web,也here.我不知道如何实现这些帖子中谈到的内容。我也试过通过conda安装eigen,比如here.这也没有起到作用。

错误信息的全文。

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
    
5 个评论
是否有更多粗略的错误信息,或日志?什么版本的 pip ,它是最新的吗?
McM
当然可以。已编辑。还有,是的。 pip 是最新的。
你的实际问题似乎是这样的。 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 。把这个问题解决了,可能至少能让你更进一步。
McM
好吧,我看到了。所以我应该单独下载这个。很奇怪,居然没有一个文件夹 C:\Users\User\AppData\Local\Temp\pip-install-qm6jy0mx\ 。当我下载它时,我应该把它放在哪里?谢谢!
McM
pygalmesh的创建者现在正在解决这个问题。请看。 github.com/nschloe/pygalmesh/issues/81
python
pip
anaconda
conda
eigen
McM
McM
发布于 2020-04-28
2 个回答
McM
McM
发布于 2021-09-29
已采纳
0 人赞同

在对 pygalmesh 提出问题后 github ,社区和创作者解决了这个问题。见 here . Simply:

conda install -c conda-forge pygalmesh
    
这方面的问题是,它安装了一个旧版本,在调用某些函数时产生了一些错误。例如,尝试github页面上的第一个例子会产生错误 "generate_2d()得到一个意外的关键字参数'max_edge_size'"。是否有可能在windows上安装文档更新的版本?
Ornstein89
Ornstein89
发布于 2021-09-29
0 人赞同

这个方案在Windows 10上运行,安装了python 3.8和Visual Studio Community 2019。

  • 安装依赖项。 gmp mpfr eigen3 cgal 。我推荐 vcpkg 用于libs的构建和安装,如下所述。你也可以用自己的方式单独安装和构建这些依赖,而不需要 vcpkg

    1.1. Install vcpkg ( https://vcpkg.io/en/getting-started.html ).

    1.2.在x64静态配置上安装依赖项。

    vcpkg install gmp:x64-windows-static
    vcpkg install mpfr:x64-windows-static
    vcpkg install eigen3:x64-windows-static
    vcpkg install cgal:x64-windows-static
    
  • Clone pygalmesh sources:

    git clone https://github.com/nschloe/pygalmesh.git
    
  • Add library_dirs=["C:/path/to/vcpkg/installed/x64-windows-static/lib"] to pygalmesh/setup.py (seeModified setup.py在帖子下面,还可以查看替代解决方案). 不要忘了插入你自己的vcpkg位置,而不是我的/path/to/vcpkg.

  • 建立并安装pygalmesh

    cd pygalmesh
    set EIGEN_INCLUDE_DIR=C:/path/to/vcpkg/installed/x64-windows-static/include
    pip install .
    
  • 确保pygalmesh已经安装。

    python
    >>> import pygalmesh
    from pybind11.setup_helpers import Pybind11Extension, build_ext
    from setuptools import setup
    # https://github.com/pybind/python_example/
    ext_modules = [
        Pybind11Extension(
            "_pygalmesh",
            # Sort input source files to ensure bit-for-bit reproducible builds
            # (https://github.com/pybind/python_example/pull/53)
            sorted(
                    "src/generate.cpp",
                    "src/generate_2d.cpp",
                    "src/generate_from_inr.cpp",
                    "src/generate_from_off.cpp",
                    "src/generate_periodic.cpp",
                    "src/generate_surface_mesh.cpp",
                    "src/remesh_surface.cpp",
                    "src/pybind11.cpp",
            include_dirs=[os.environ.get("EIGEN_INCLUDE_DIR", "/usr/include/eigen3/")],
            # no CGAL libraries necessary from CGAL 5.0 onwards
            libraries=["gmp", "mpfr"],
            # !!! ADD YOUR PATH HERE !!!
            library_dirs=["C:/D/Apps/vcpkg/installed/x64-windows-static/lib"]
    if __name__ == "__main__":
        setup(
            cmdclass={"build_ext": build_ext},
            ext_modules=ext_modules,
            zip_safe=False,
    

    替代解决方案

  •