首页 > 解决方案 > Python在不改变提示的情况下激活虚拟环境

问题描述

我的 shell 提示符是只读的,所以在尝试激活 venv 时,我得到

source myenv/bin/activate
-bash: PS1: readonly variable

在这里查看文档

https://virtualenv.pypa.io/en/stable/reference/#envvar-VIRTUAL_ENV_DISABLE_PROMPT

将其设置为非空值时创建的任何 virtualenv 都不会使其激活脚本修改 shell 提示

所以,我删除了venv,跑了

export VIRTUAL_ENV_DISABLE_PROMPT=1

并重新创建了虚拟环境,

virtualenv myenv

但它仍然显示

-bash: PS1: readonly variable

当我尝试获取它时。

该变量似乎设置正确

env | grep VIRTUAL_ENV_DISABLE
VIRTUAL_ENV_DISABLE_PROMPT=1

我在这里做错了什么?

标签: pythonbash

解决方案


更新./bin/activate脚本以跳过更新PS1变量:

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
    _OLD_VIRTUAL_PS1="$PS1"
    if [ "x" != x ] ; then
        #PS1="$PS1"
    else
        #PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
    fi
    #export PS1
fi

推荐阅读