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

Pip wheel行为变更:如何让新版本恢复临时目录构建模式?

解决新版Pip wheel 命令直接修改原源码目录的问题

为什么会出现这个差异?

Pip在21.0版本左右调整了构建逻辑,默认启用原地构建(in-tree build),不再自动把源码复制到临时目录操作。这个变更是为了减少磁盘IO、提升构建效率,但会导致你的setup.py里的文件删除操作直接影响到本地源码树。

恢复旧行为的两种方式

1. 命令行参数临时指定临时构建目录

执行pip wheel时,手动指定一个临时构建目录,强制Pip复制源码过去操作,完全模拟旧版行为:

pip wheel --no-deps --build-dir "$(mktemp -d)" .

$(mktemp -d)会自动创建一个临时目录,构建完成后可以手动删除,或者系统会自动清理。

2. 全局配置永久启用旧模式

如果需要所有Pip构建都用旧行为,可以修改Pip的配置文件:

  • Linux/macOS:修改~/.config/pip/pip.conf
  • Windows:修改%APPDATA%\pip\pip.ini

在配置文件中添加以下内容:

[global]
use-feature = -in-tree-build

这会全局禁用原地构建特性,让Pip回到复制源码到临时目录的旧逻辑。

备选方案:修改setup.py适配新逻辑

如果不想依赖Pip参数,也可以调整setup.py,让它只在构建临时环境中修改文件:

  • 在setup.py中先复制需要处理的文件到临时路径,再对副本进行删除/修改操作
  • 或者检测当前目录是否为Pip的临时构建目录(可以通过环境变量或目录特征判断),仅在非源码目录时执行删除操作

补充细节

这个行为变更属于Pip 21.0版本对PEP 517/518构建流程的优化,官方在版本变更日志中提到了该调整,但没有在pip wheel的单独文档中突出说明。

内容的提问来源于stack exchange,提问作者Evan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:31:10