pip install -e安装修改后的betterproto报setuptools不可用错误
报错原因
新版pip默认开启隔离构建环境机制:执行安装命令时,pip会创建一个独立的临时空环境完成构建流程,不会复用当前虚拟环境中已安装的依赖。因此即使你已经在venv中安装了setuptools,临时构建环境中找不到该包依然会触发报错。
你之前用pip install .或python3 setup.py install安装后修改不生效,是因为这两种安装方式会把源码完整复制到Python的site-packages目录下,你修改本地下载目录的代码时,site-packages里的运行副本不会同步更新,自然看不到修改效果。
可行解决方案
以下方案均为可编辑安装模式,安装后你对本地源码的修改会实时生效,无需重复安装:
- 方案1:安装时关闭构建隔离
执行命令时追加--no-build-isolation参数,让pip直接复用当前虚拟环境的依赖完成构建,命令如下:
执行前确认当前venv中已经安装了pip3 install -e . --no-build-isolationsetuptools和wheel即可,这是最简便的处理方式。 - 方案2:声明构建依赖
在项目根目录新建pyproject.toml文件,写入以下内容明确告知pip构建时需要的依赖:
保存后正常执行[build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta"pip3 install -e .即可,pip会自动把声明的依赖安装到临时构建环境中,不会再出现找不到setuptools的报错。 - 方案3:直接调用setuptools的开发模式安装
跳过pip的构建流程,直接执行setuptools自带的开发安装命令,效果和pip install -e .完全一致:python3 setup.py develop
内容的提问来源于stack exchange,提问作者masoud
相关产品推荐
相关产品推荐

