You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyenv时无法安装部分Python包的问题求助

pyenv环境安装包时找不到已安装模块的问题

我在使用pyenv时遇到了包安装失败的问题,具体表现为安装新包时无法找到已安装的模块。例如,我通过pyenv activate xxx激活Python 3.8.19的虚拟环境后,执行pip install vamp命令安装vamp包,明明已经安装了numpy,却出现如下错误:

Collecting vamp
  Using cached vamp-1.1.0.tar.gz (107 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
  ╰─> [17 lines of output]
      Traceback (most recent call last):
        File "/home/USER_NAME/.pyenv/versions/3.8.19/envs/ENV_NAME/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/USER_NAME/.pyenv/versions/3.8.19/envs/ENV_NAME/lib/python3.8/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/USER_NAME/.pyenv/versions/3.8.19/envs/ENV_NAME/lib/python3.8/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-12igiyji/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/tmp/pip-build-env-12igiyji/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-12igiyji/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 487, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-12igiyji/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 3, in <module>
      ModuleNotFoundError: No module named 'numpy'
      [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.

使用pyenv shell 3.8.19代替虚拟环境激活时,也会出现相同现象。此外,安装omnizart、madmom、natten等其他包时,也会遇到此类错误。


解决方案

这类问题的核心原因是:pip在构建包的wheel时默认会创建隔离的临时构建环境,这个环境不会继承当前环境已安装的依赖包;而部分包(比如vamp)的setup.py会直接导入numpy等依赖来执行构建逻辑,导致构建阶段找不到已安装的模块。

以下是几种可行的解决方法:

1. 关闭构建环境隔离

直接让pip在当前环境中构建包,跳过临时隔离环境,这样就能使用已安装的依赖:

pip install vamp --no-build-isolation

这个方法适用于大部分此类场景,对omnizart、madmom等包同样有效。

2. 指定构建阶段依赖

如果不想关闭隔离环境,可以提前告知pip构建该包需要的依赖,让临时环境自动安装:

pip install vamp --config-settings=setup-requires=numpy

对于较旧版本的pip(<21.3),可以使用--build-option参数:

pip install vamp --build-option="--setup-requires=numpy"

3. 确认pyenv环境激活正常

先检查当前环境的pip是否属于目标pyenv环境:

which pip

正常情况下,虚拟环境应该输出~/.pyenv/versions/3.8.19/envs/ENV_NAME/bin/pip,pyenv shell环境应该输出~/.pyenv/versions/3.8.19/bin/pip。如果路径不对,重新激活环境并检查PATH:

echo $PATH

确保pyenv对应的bin目录在PATH最前端。

4. 升级pip和构建工具

旧版本的pip、setuptools可能存在构建环境处理的bug,先升级到最新版本:

pip install --upgrade pip setuptools wheel

内容的提问来源于stack exchange,提问作者S. Yong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:34:50