Conda环境下Python 3.8执行build命令总是重装setuptools及wheel的原因咨询
解答:Conda环境执行
python -m build时版本不符的原因与解决办法 这问题我之前帮不少开发者排查过,核心原因是python -m build工具的默认行为在搞鬼,咱们一步步拆解:
为什么显示的版本和Conda环境实际版本不符?
python -m build默认会创建一个临时隔离环境来执行包构建操作,这个环境和你当前的Conda环境是完全独立的。它不会直接复用你Conda环境里的setuptools和wheel,而是会从基础版本开始初始化(比如你看到的setuptools 49.2.1,这是build工具默认临时环境的初始版本),再根据自身的依赖要求调整版本。
为什么要自动安装更高版本的包?
build工具本身对构建依赖有最低版本要求:它明确要求setuptools>=51,而临时环境初始的49.2.1不满足这个条件,所以会自动下载并安装满足要求的最新兼容版本(也就是你看到的58.3.0和wheel 0.37.0)。这和你Conda环境里已安装的版本没有直接关联,因为临时环境是独立的。
如何解决这个问题?
1. 直接复用当前Conda环境的依赖
如果你确定当前环境的setuptools和wheel版本已经满足构建要求,可以用--no-isolation参数跳过临时环境的创建,直接使用当前环境的包:
python -m build --wheel --no-isolation
这样就不会触发自动卸载和升级操作了。
2. 锁定构建依赖的版本
如果你想统一控制构建时使用的依赖版本,可以在项目根目录创建pyproject.toml文件,明确指定setuptools和wheel的版本范围:
[build-system] requires = ["setuptools>=51.0,<59", "wheel==0.36.0"] build-backend = "setuptools.build_meta"
这样build工具在创建临时环境时,就会安装你指定的版本,而不是自动拉取最新版。
内容的提问来源于stack exchange,提问作者Akahs
相关产品推荐
相关产品推荐

