升级Ubuntu 22.04至23.10后pip安装软件包需添加--break-system-packages的问题咨询
升级Ubuntu 22.04至23.10后pip安装软件包需添加--break-system-packages的问题咨询
嗨,这确实是升级后正常的现象哦!Ubuntu从23.04版本开始就遵循了PEP 668规范,把系统级的Python环境标记为“外部管理”状态,这么做主要是为了避免pip安装的包和apt维护的系统包产生依赖冲突,防止系统工具因为依赖混乱出现故障。
针对你需要用pip安装特定版本包做开发的需求,给你几个可行的解决方向:
使用虚拟环境(首推方案):这是最安全且符合开发规范的方式,能完全隔离你的项目依赖和系统环境。
- 先创建一个虚拟环境:
python -m venv my_dev_env(my_dev_env可以换成你喜欢的环境名称) - 激活虚拟环境:
source my_dev_env/bin/activate - 激活后直接执行
pip install foobar就能安装你需要的特定版本包,全程不会触发那个警告,所有依赖都只存在于这个独立环境中,后续换项目还能新建不同的虚拟环境,灵活度拉满。
- 先创建一个虚拟环境:
永久禁用警告(谨慎使用):如果你确实需要在系统环境中安装包,可以通过配置文件跳过这个提示。
- 创建或修改用户目录下的pip配置文件:
~/.config/pip/pip.conf - 在文件中添加以下内容:
之后再执行[global] break-system-packages = truepip install就不用每次手动加--break-system-packages参数了,但要注意这种方式可能会破坏系统包的依赖结构,导致部分系统Python工具无法正常运行,非必要不建议这么做。
- 创建或修改用户目录下的pip配置文件:
用pipx安装命令行工具:如果要安装的是类似命令行工具类的Python包,pipx是个很好的选择。它会把每个包安装在单独的隔离环境里,同时将可执行文件映射到系统路径,既不会干扰系统环境,又能正常使用工具。执行
pipx install foobar即可完成安装。
备注:内容来源于stack exchange,提问作者Étienne




