如何让pip命令仅在系统支持时才使用--break-system-packages参数
如何让pip命令仅在系统支持时才使用--break-system-packages参数
针对你遇到的这个跨Ubuntu版本的pip兼容问题,我给你两个实用的解决思路,能自动判断是否添加--break-system-packages参数:
动态检查参数是否支持(推荐)
比起硬卡版本号,直接检查pip是否实际支持这个参数会更稳妥(毕竟有些发行版可能给旧版pip打了补丁支持该参数)。可以通过pip install的帮助信息来判断,把命令写成这样:sudo pip install xyz $(pip install --help | grep -q "--break-system-packages" && echo "--break-system-packages")原理很简单:如果
pip install --help里能找到--break-system-packages这个选项,就自动把参数加上;否则就忽略,直接执行普通的安装命令。基于pip版本号判断
如果你确定只有pip 23.0及以上版本才引入了这个参数,也可以通过版本比较来实现。在bash脚本里可以这么写:# 获取当前pip的版本号 PIP_VERSION=$(pip --version | awk '{print $2}') # 比较版本号,判断是否>=23.0 if [ "$(printf '%s\n' "23.0" "$PIP_VERSION" | sort -V | head -n1)" = "23.0" ]; then sudo pip install xyz --break-system-packages else sudo pip install xyz fi这里用
sort -V来做版本号的自然排序,确保版本比较的准确性。
备注:内容来源于stack exchange,提问作者thor
相关产品推荐
相关产品推荐

