pip安装本地自定义构建包时已安装依赖仍无法找到
问题分析
从报错日志的核心信息可以看出:你的自定义构建代码(mycustominstaller/__init__.py第19行)在包的构建阶段直接导入了numpy,但pip的构建环境是独立隔离的,不会自动继承全局环境的依赖,因此触发ModuleNotFoundError: No module named 'numpy':
File "/myfolder/mypackagename/mycustominstaller/__init__.py", line 19, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy'
解决方案
方法1:手动预安装构建依赖
执行安装命令前,先在当前环境安装numpy:
pip install numpy
再执行原安装命令:
python3 -m pip install -vvv .
方法2:在pyproject.toml中声明构建依赖(推荐)
在项目根目录的pyproject.toml里,将numpy添加到构建系统的依赖列表中,pip会自动在临时构建环境中安装这些依赖:
[build-system] requires = ["setuptools", "wheel", "numpy"] # 新增numpy到构建依赖 build-backend = "setuptools.build_meta"
修改后直接执行原安装命令即可,无需手动提前安装。
方法3:跳过构建环境隔离(仅本地调试用)
如果你的全局环境已经安装了numpy,可以强制pip使用当前环境构建,跳过隔离机制:
python3 -m pip install -vvv . --no-build-isolation
注意:该方法不适合正式发布场景,会依赖全局环境状态,可能导致构建结果不一致。
补充提示
构建依赖和运行依赖是两个概念:
- 运行依赖是包安装后运行时需要的,通常写在
setup.py的install_requires或pyproject.toml的[project.dependencies]中; - 构建依赖是包构建过程中需要的,必须在
[build-system.requires]中声明。
内容的提问来源于stack exchange,提问作者j13r
相关产品推荐
相关产品推荐

