Alex' Blog

记录生活和工作

0%

virtualenv失效原因

问题:virtualenv activate 后失效

问题描述

Virtualenv 经常用于python环境的隔离,但有时候执行了activate命令,终端显示已经进入对应环境(终端前面会显示环境名称)。此时,执行python会发现并没有使用对应环境下的python解释器,而是调用的系统的python解释器。

导致原因

执行source activate 其实是加载activate这个脚本,打开脚本可以看到

1
2
3
4
5
6
7
VIRTUAL_ENV="/Users/someone/Documents/python_env/python3"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"

export PATH

上述脚本其实就是virtualenv 切换python环境的实现方式,通过在环境变量的最前面添加当前环境的python解释器的路径完成。需要注意的是,这个路径是在脚本中写死的,所以如果你将python环境的目录修改了,那么此时会将一个错误的python解释器路径添加到环境变量当中,当然也就找不到对应的解释器,于是系统会接着往下找,最后找到系统的解释器。

问题解决

将VIRTUAL_ENV这个环境变量设置为正确的目录路径。