You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spack环境下安装pytetgen时无法识别已安装Cython模块的问题求助

Spack环境下安装pytetgen时无法识别已安装Cython模块的问题求助

我使用Spack 0.24.0.dev0创建了一个包含Python 3.13.0的环境,同时用Spack安装了包括Cython在内的多个Python模块。

现在我需要安装pytetgen模块。但当我尝试执行pip install pytetgen时,安装失败,提示找不到Cython模块。不过我可以在Python中手动加载Cython,而且执行pip install Cython时,系统也正确提示该模块已安装。我的PYTHONPATH变量似乎也正确指向了Spack安装的模块路径。

我和同事都束手无策,有没有人能帮我进一步排查问题?

我的Spack环境似乎包含了正确的Python和必要的模块:

$ spack find
==> In environment sierra_gcc
==> 10 root specs
[+] openmpi@4.0.5  [+] py-matplotlib  [+] py-pandas  [+] py-scikit-learn  [+] python
[+] py-cython      [+] py-numpy       [+] py-pip     [+] py-setuptools    [+] seacas

-- linux-rhel8-icelake / gcc@10.2.0 -----------------------------
autoconf@2.72                       libffi@3.4.6          parallel@20240822            py-scikit-learn@1.5.2
automake@1.16.5                     libidn2@2.3.7         parallel-netcdf@1.12.3       py-scipy@1.14.1
berkeley-db@18.1.40                 libiconv@1.17         pcre2@10.44                  py-setuptools@69.2.0
bison@3.8.2                         libjpeg-turbo@3.0.3   perl@5.40.0                  py-setuptools-scm@8.0.4
bzip2@1.0.8                         libmd@1.0.4           pigz@2.8                     py-six@1.16.0
c-blosc@1.21.5                      libpciaccess@0.17     pkgconf@2.2.0                py-threadpoolctl@3.1.0
ca-certificates-mozilla@2023-05-30  libpng@1.6.39         pmix@4.2.2                   py-tomli@2.0.1
catch2@3.7.1                        libpthread-stubs@0.5  py-beniget@0.4.1             py-typing-extensions@4.12.2
cgns@4.4.0                          libsigsegv@2.14       py-contourpy@1.3.0           py-tzdata@2023.3
cmake@3.31.0                        libtool@2.4.7         py-cppy@1.2.1                py-versioneer@0.29
curl@8.10.1                         libunistring@1.2      py-cycler@0.11.0             py-wheel@0.41.2
diffutils@3.10                      libx11@1.8.10         py-cython@3.0.11             python@3.13.0
expat@2.6.4                         libxau@1.0.11         py-flit-core@3.9.0           python-venv@1.0
findutils@4.9.0                     libxcb@1.17.0         py-fonttools@4.39.4          qhull@2020.2
fmt@11.0.2                          libxcrypt@4.4.35      py-gast@0.5.4                re2c@3.1
freetype@2.13.2                     libxdmcp@1.1.5        py-joblib@1.2.0              readline@8.2
gcc-runtime@10.2.0                  libxml2@2.13.4        py-kiwisolver@1.4.5          seacas@2024-08-15
gdbm@1.23                           lz4@1.10.0            py-matplotlib@3.9.2          snappy@1.2.1
gettext@0.22.5                      m4@1.4.19             py-meson-python@0.16.0       sqlite@3.46.0
git@2.47.0                          matio@1.5.26          py-numpy@2.1.2               tar@1.34
glibc@2.28                          meson@1.5.1           py-packaging@24.1            util-linux-uuid@2.40.2
gmake@4.4.1                         nasm@2.16.03          py-pandas@2.2.3              util-macros@1.20.1
hdf5@1.14.5                         ncurses@6.5           py-pillow@11.0.0             xcb-proto@1.17.0
hwloc@2.11.1                        netcdf-c@4.9.2        py-pip@23.1.2                xextproto@7.3.0
inputproto@2.3.2                    nghttp2@1.63.0        py-ply@3.11                  xproto@7.0.31
kbproto@1.0.7                       ninja@1.12.1          py-pybind11@2.13.5           xtrans@1.5.2
krb5@1.21.3                         numactl@2.0.18        py-pyparsing@3.1.2           xz@5.4.6
libaec@1.0.6                        openblas@0.3.28       py-pyproject-metadata@0.7.1  zlib-ng@2.2.1
libbsd@0.12.2                       openmpi@4.0.5         py-python-dateutil@2.8.2     zstd@1.5.6
libedit@3.1-20240808                openssh@9.9p1         py-pythran@0.16.1
libevent@2.1.12                     openssl@3.4.0         py-pytz@2024.2
==> 122 installed packages
==> 0 concretized packages to be installed (show with `spack find -c`)

环境指向了正确的Python二进制文件:

$ which python
~/spack/var/spack/environments/sierra_gcc/.spack-env/view/bin/python

在Python中,我可以轻松加载包括Cython在内的模块:

$ python
Python 3.13.0 (main, Dec  3 2024, 14:21:56) [GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> from Cython import *
>>> 

PYTHONPATH看起来是正确的:

$ echo $PYTHONPATH
/home/tvj/spack/var/spack/environments/sierra_gcc/.spack-env/view/lib:/home/tvj/spack/var/spack/environments/sierra_gcc/.spack-env/view/lib/python3.13/site-packages:.

当我执行pip install Cython时,系统显示该模块已安装:

$ pip install Cython
Requirement already satisfied: Cython in ./spack/var/spack/environments/sierra_gcc/.spack-env/view/lib/python3.13/site-packages (3.0.11)

然而执行pip install pytetgen时却无法识别Cython模块:

$ pip install pytetgen
Collecting pytetgen
  Using cached pytetgen-0.2.2.tar.gz (409 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [23 lines of output]
      Traceback (most recent call last):
        File "/home/tvj/spack/var/spack/environments/sierra_gcc/.spack-env/view/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
          ~~~~^^
        File "/home/tvj/spack/var/spack/environments/sierra_gcc/.spack-env/view/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ~~~~^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/tvj/spack/var/spack/environments/sierra_gcc/.spack-env/view/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-yzg25sy8/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=[])
                 ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-yzg25sy8/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 304, in _get_build_requires
          self.run_setup()
          ~~~~~~~~~~~~~~^^
        File "/tmp/pip-build-env-yzg25sy8/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 522, in run_setup
          super().run_setup(setup_script=setup_script)
          ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-yzg25sy8/overlay/lib/python3.13/site-packages/setuptools/build_meta.py", line 320, in run_setup
          exec(code, locals())
          ~~~~^^^^^^^^^^^^^^^^
        File "<string>", line 5, in <module>
      ModuleNotFoundError: No module named 'Cython'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

[notice] A new release of pip is available: 23.1.2 -> 24.3.1
[notice] To update, run: python3 -m pip install --upgrade pip

我尝试了各种变体命令,比如pip3 install pytetgenpython -m pip install pytetgen,但都得到相同的错误。

这看起来可能和类似的pip构建依赖识别问题相关,但添加setup_requires=['Cython']的解决方法对我不起作用。

我注意到pytetgen的安装脚本似乎使用了distutils,这会不会是问题所在?

备注:内容来源于stack exchange,提问作者Joseph Tipton

火山引擎 最新活动