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

Ubuntu20.04创建Python venv预装大量冗余包如何解决

问题原因

你使用的Ubuntu 20.04系统安装了ROS Noetic,ROS安装过程中会自动将自身的Python包路径写入全局PYTHONPATH环境变量。默认创建的Python venv会继承当前shell的环境变量,即便venv开启了系统包隔离,PYTHONPATH下的路径优先级仍高于虚拟环境自身的包路径,因此执行pip list时会看到大量ROS相关包——这些包并未实际写入你的虚拟环境目录,只是环境变量继承导致的可见假象。

解决方法

要获得仅包含pip、wheel、setuptools三个基础包的干净虚拟环境,按以下步骤操作即可:

  • 创建虚拟环境时明确指定隔离系统包(新版venv默认已开启,手动指定可避免环境默认配置异常):
    python3 -m venv --no-site-packages my_venv
    
  • 激活虚拟环境前先清空当前shell的PYTHONPATH变量,避免ROS路径被继承:
    # 临时清空PYTHONPATH
    export PYTHONPATH=""
    # 激活虚拟环境
    source my_venv/bin/activate
    
  • (可选)如果需要永久避免该问题,可修改虚拟环境的激活脚本,自动处理PYTHONPATH:
    1. 编辑my_venv/bin/activate文件,在文件末尾添加如下内容,实现激活虚拟环境时自动备份并清空PYTHONPATH:
    export OLD_PYTHONPATH="$PYTHONPATH"
    export PYTHONPATH=""
    
    1. 找到deactivate函数的定义,在函数内部合适位置添加如下内容,实现退出虚拟环境时自动恢复原有PYTHONPATH:
    export PYTHONPATH="$OLD_PYTHONPATH"
    unset OLD_PYTHONPATH
    

操作完成后执行pip list验证,就能看到仅保留了三个基础依赖包的干净环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:39:03