如何配置pip使其在软件包已安装时抛出错误?
让pip在包已安装时抛出错误
当然可以实现这个需求,不过pip本身没有全局配置项直接开启这个行为,你可以用下面两种方式达成:
方法1:先检查再安装(通用场景)
写个简单脚本,先判断包是否已在pip list里,存在就直接报错,不存在再执行安装。这样不管包是什么版本,只要已装就会触发错误。
以Bash为例:
TARGET_PACKAGE="你要安装的包名" # 用freeze格式精准匹配包名,避免误判 if pip list --format=freeze | grep -q "^${TARGET_PACKAGE}=="; then echo "ERROR: ${TARGET_PACKAGE} 已经安装" >&2 exit 1 else pip install "${TARGET_PACKAGE}" fi
方法2:用版本约束触发报错(特定版本场景)
如果你的需求是针对特定版本——比如不想覆盖已安装的某个版本,或者只有当已安装版本不符合要求时报错,可以用pip的版本约束语法:
要是只要包已安装(不管版本)就报错,指定一个不可能存在的版本:
pip install "requests==999.999.999"这样如果requests已经装了,pip会提示版本冲突报错;没装的话会提示找不到该版本。
要是只想禁止安装某个特定版本(比如已装2.28.0就报错):
pip install "requests!=2.28.0"已装2.28.0时会抛出版本冲突错误,其他情况正常安装。
补充
目前pip没有全局配置能让所有pip install命令默认触发“已安装则报错”,上面的方法是最直接的实现途径。
内容的提问来源于stack exchange,提问作者Foobar
相关产品推荐
相关产品推荐

