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

pip 20.x下载SciPy 1.4.1源码后被清理的问题及解决方法

解决pip 20.0.x版本下载SciPy源码被自动清理的问题

我来帮你理清这个问题的来龙去脉,以及对应的解决办法——之前处理过类似的pip版本兼容性坑,刚好能给你明确的方向。

为什么pip 20.0/20.0.1/20.0.2会出问题?

在pip 20.0.x版本中,团队对download命令的流程做了一个行为变更:当你使用--no-binary=:all:下载源码包时,pip会自动触发「安装构建依赖」的步骤,哪怕你根本不需要安装包。这个设计原本是为了让后续的安装流程更顺畅,但它会在构建依赖检查失败时,自动清理已经下载好的源码包。

而且你提到的--no-deps参数在这里不生效,是因为这个参数只控制是否下载运行时依赖,而pip的构建依赖检查属于内部流程,不受--no-deps的影响。

可行的解决办法

1. 降级pip到19.3.x版本

这是最直接的方案,因为19.3及更早版本的pip还没有引入这个强制构建依赖检查的逻辑。执行以下命令降级:

python3 -m pip install pip==19.3.1

之后再运行你原来的下载命令,就能正常保留SciPy 1.4.1的源码包了:

python3 -m pip download --no-binary=:all: scipy==1.4.1

2. 添加--no-build-isolation参数

pip 20.0.x本身支持--no-build-isolation参数,它能跳过构建隔离环境的创建,也就不会去尝试安装构建依赖了。修改你的下载命令为:

python3 -m pip download --no-binary=:all: --no-build-isolation scipy==1.4.1

这个参数会阻止pip执行构建依赖的检查步骤,下载后的源码包就不会被自动清理了。

3. 升级pip到20.1及以上版本

pip团队在20.1版本中修复了这个问题,调整了download命令的逻辑:当使用--no-binary=:all:时,不再强制执行构建依赖的检查。你可以升级pip到20.1或更高版本:

python3 -m pip install --upgrade pip>=20.1

升级后再执行原来的下载命令,就能正常工作了。

4. 手动下载源码包(备选方案)

如果上面的命令行方案都不想用,你可以直接去PyPI找到SciPy 1.4.1的页面,下载对应的.tar.gz源码包。这个方法适合偶尔操作的场景,不需要依赖pip的命令行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:33:13