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

Ubuntu 24下Python3.11规避系统包及解决Matplotlib多版本警告

解决Python3.11调用系统级包的问题(无需虚拟环境)

先给结论

可行,但绝对别直接删除/usr/lib/python3/dist-packages/路径,有更安全的替代方案。

为什么不能直接删?

这个路径是Ubuntu系统所有Python版本共享的系统包目录,哪怕你用的是单独安装的Python3.11,部分系统工具可能仍会通过它调用依赖包。直接删除轻则导致部分系统脚本失效,重则引发难以排查的系统问题,且操作不可逆,风险很高。

靠谱的替代方案

1. 单次运行时临时屏蔽系统路径

每次运行脚本前,通过PYTHONPATH环境变量指定仅加载用户本地的包路径,完全屏蔽系统路径:

PYTHONPATH="/home/<你的用户名>/.local/lib/python3.11/site-packages" python3.11 你的脚本名.py

原理:PYTHONPATH会让Python优先加载指定路径内的包,且不会读取系统默认的dist-packages目录。

2. 永久让Python3.11屏蔽系统路径

给Python3.11添加启动时自动执行的脚本,自动过滤系统路径:

  1. 创建Python3.11的用户配置目录:
    mkdir -p ~/.config/python3.11
    
  2. 在该目录下创建sitecustomize.py文件,写入以下内容:
    import sys
    # 过滤掉系统级的dist-packages路径
    sys.path = [path for path in sys.path if not path.startswith('/usr/lib/python3/dist-packages')]
    
    此后每次启动Python3.11,该脚本都会自动运行,帮你移除系统路径。

3. 确保本地安装的包完全独立

重新安装依赖时,添加--no-cache-dir参数避免残留系统包的缓存,确保所有包都安装在用户本地路径:

python3.11 -m pip install --user --force-reinstall --no-cache-dir -r requirements.txt

验证是否生效

运行以下命令,检查输出的路径列表中是否还有/usr/lib/python3/dist-packages/:

python3.11 -c "import sys; print('\n'.join(sys.path))"

如果看不到该路径,说明配置生效,再执行import matplotlib.pyplot应该就不会出现警告了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 10:34:54