如何让pip在检测到请求的依赖不存在时提前终止?
问题描述
最小示例:
pip install tensorflow==2.9.1 non-existing==1.2.3
执行输出:
Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com Collecting tensorflow==2.9.1 Downloading tensorflow-2.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (511.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 511.7/511.7 MB 7.6 MB/s eta 0:00:00 ERROR: Could not find a version that satisfies the requirement non-existing==1.2.3 (from versions: none) ERROR: No matching distribution found for non-existing==1.2.3
可见pip会先下载体积较大的TensorFlow,之后才告知non-existing不存在。有没有办法让它提前报错退出,即在下载前就提示错误并终止操作?
解决方案
可以使用pip install的--dry-run参数做预检查,该参数会让pip验证所有指定包的版本可用性,但不会实际下载或安装任何内容。如果检测到不存在的包或不匹配的版本,会直接报错终止,避免无效的大文件下载。
使用示例:
pip install --dry-run tensorflow==2.9.1 non-existing==1.2.3
执行后会直接返回错误:
ERROR: Could not find a version that satisfies the requirement non-existing==1.2.3 (from versions: none) ERROR: No matching distribution found for non-existing==1.2.3
确认所有包都可用后,再执行不带--dry-run的正常安装命令即可。
注:少数复杂依赖场景下--dry-run可能无法完全覆盖所有情况,但对绝大多数常规安装场景,该方法足够提前发现问题。
内容的提问来源于stack exchange,提问作者Tobias Hermann
相关产品推荐
相关产品推荐

