隔离环境中使用pyproject.toml+setuptools_scm安装本地包报错求助
问题解决方法
错误原因
即便当前环境已安装符合版本要求的setuptools和setuptools_scm,使用pip install --no-index -e .时,pip默认会创建隔离的构建环境来安装build-system.requires中声明的依赖。此时pip无法访问当前环境已安装的包,而是尝试寻找可安装的分发包(如wheel/sdist),但--no-index禁止了从PyPI下载,因此找不到setuptools的分发包导致报错。
解决方案
方案1:复用当前环境的已安装依赖(最简便)
直接添加--no-build-isolation参数,跳过隔离构建环境,使用当前环境已安装的setuptools和setuptools_scm:
pip3 install --no-index --no-build-isolation -e .
该参数会让pip复用当前环境中已有的构建依赖,无需额外准备分发包。
方案2:指定本地依赖包路径
如果需要保留构建隔离环境,可提前准备好setuptools和setuptools_scm的分发包(wheel/sdist):
- 在有网络环境下下载对应版本的包:
pip download setuptools==66.1.1 setuptools_scm==7.1.0 - 将下载的包复制到隔离环境的某个目录(如
./local_pkgs) - 执行安装命令时指定本地包路径:
pip会从pip3 install --no-index --find-links=./local_pkgs -e ../local_pkgs目录中查找所需的构建依赖。
验证
执行命令前可确认当前环境的依赖版本:
pip3 show setuptools setuptools_scm
确保setuptools版本≥40.8.0,setuptools_scm版本符合要求。
内容的提问来源于stack exchange,提问作者olebole
相关产品推荐
相关产品推荐

