是否可以更改提示中显示的 python virtualenv 名称?

问题描述 投票:0回答:3

在 virtualenv 激活时,有什么方法可以更改提示中显示的名称吗?

username@host:~$ python3 -m venv venv
username@host:~$ source venv/bin/activate
(venv) username@host:~$

但我需要它显示为这样的东西:

username@host:~$ python3 -m venv venv
username@host:~$ source venv/bin/activate
(some_arbitrary_name) username@host:~$

更新: 感谢您的回答。提示名称创建后无法更改,但是,有一种方法可以在提示中显示除文件夹名称之外的任意名称:

username@host:~$ python3 -m venv .venv --prompt some_arbitrary_name
username@host:~$ source venv/bin/activate
(some_arbitrary_name) username@host:~$
python virtualenv rename prompt
3个回答
2
投票

venv 名称与您在其中创建它的文件夹相同。 用你喜欢的名字创建一个 venv

$ python -m venv some_arbitrary_name
$ . ./some_arbitrary_name/bin/activate
(some_arbitrary_name)$ 

2
投票

提示已在

bin/activate
脚本中修改,因此只需更改添加
(venv)
的行即可。它看起来像这样:

if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_VIRTUAL_PS1="${PS1:-}"
    PS1="(venv) ${PS1:-}"
    export PS1
fi

只需将

(venv)
更改为您选择的名称即可。

请注意,在最新的 venv 版本中,上面的代码如下所示:

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

您仍然可以更换

(`basename \"$VIRTUAL_ENV\"`)

使用简单的字符串,例如

(my_venv)


0
投票

虽然这是不可能的,但我想不出您可能想要显示与虚拟环境名称不同的名称的场景。如果您想重命名虚拟环境,可以执行以下操作。
默认情况下,virtualenv 不支持环境重命名。更安全的做法是删除 virtualenv 目录并使用正确的名称创建一个新目录。您可以通过以下方式执行此操作:

Activate your virtualenv: source vnev/bin/activate
Create a requirements.txt of currently installed packages: pip freeze > requirements.txt
Delete the misspelled virtualenv: rm -r vnev/
Create a new virtualenv with correct name: virtualenv venv
Activate new virtualenv: source venv/bin/activate
Install packages from requirements.txt: pip install -r requirements.txt
© www.soinside.com 2019 - 2024. All rights reserved.