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

Ubuntu 20.04下virtualenv激活异常,pip安装包未写入虚拟环境

问题解决排查步骤
  • 第一步 验证虚拟环境是否真实激活
    执行以下命令核对路径,正常输出应指向当前虚拟环境venv目录下的bin子目录:
which python3
which pip3
echo $VIRTUAL_ENV

如果输出路径不符合预期,说明activate脚本未正常执行,确认source的路径是否为对应venv目录下的bin/activate,路径错误会导致仅前缀显示(venv)但环境变量未替换。

  • 第二步 检查虚拟环境配置
    打开venv目录下的pyvenv.cfg文件,查看include-system-site-packages参数值:
    如果参数为true,说明创建虚拟环境时开启了继承系统包的配置,会优先读取全局/用户目录的包。可直接修改该参数为false,或删除旧虚拟环境后重新创建:
rm -rf venv
# 使用virtualenv创建
virtualenv venv
# 或使用系统自带venv创建
python3 -m venv venv

重新创建后再次执行source激活命令。

  • 第三步 检查PYTHONPATH环境变量冲突
    执行命令echo $PYTHONPATH,如果有非空输出,说明自定义的PYTHONPATH优先级高于虚拟环境的包路径,导致优先读取用户目录的site-packages。执行以下命令临时清空该变量:
unset PYTHONPATH

之后再次查看sys.path,确认虚拟环境的site-packages路径已出现在搜索列表前列。如果需要永久解决,可检查/.bashrc、/.zshrc等终端配置文件,删除手动设置PYTHONPATH的相关行。

  • 第四步 检查pip全局配置
    执行pip config list查看是否存在global.user=true配置,如果存在该配置,pip会默认将所有包安装到用户目录,忽略虚拟环境。解决方法为编辑~/.pip/pip.conf文件,删除user = true行,或安装包时额外添加--user=false参数:
python3 -m pip install pytest --user=false

验证方法

完成上述操作后执行以下命令,输出的第一个site-packages路径应为当前虚拟环境下的对应目录,即配置生效:

python3 -c "import sys; print([p for p in sys.path if 'site-packages' in p])"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:27:03