更改Python virtualenv名称,以在提示符中显示,是否可能?

5

当虚拟环境被激活时,有没有办法更改提示中显示的名称?

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:~$

3
更改虚拟环境的名称 :) - rivamarco
https://dev59.com/3VgQ5IYBdhLWcg3wIQZB - W. White
4
@AlekseyP:我鼓励你将 python3 -m venv .venv --prompt some_arbitrary_name 解决方案发布为一个实际答案。目前已有的回答(在我写这篇翻译时)中没有提到它,而一些站点读者可能会直接查看答案,以为问题与他们正在尝试解决的问题相同,因此可能会错过你的更新。(如果你关心这个的话)你还可以在该网站上获得更多的声望。我很高兴地承诺,只要你提交的答案与你的更新文本非常相似,我就会给你点赞。 - lindes
1
@lindes 的 --prompt 选项非常好用,谢谢! - haridsv
1
关于您的观点“创建后无法更改提示名称”,我在pyvenv.cfg文件中看到了一个prompt选项,您可以尝试进行更改。 - haridsv
3个回答

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)的简单字符串


2

venv的名称与您创建它的文件夹相同。使用您喜欢的名称创建venv。

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


8
通常来说,由于各种原因(大多是基于惯例的),这不是最理想的选择,例如.gitignore文件、运行activate的别名等等。因此有一个替代方案:使用venv--prompt选项,例如:python3 -m venv --prompt some_arbitrary_name .env -- 将创建./.env,并且. ./.env/bin/activate将给出与您相同的提示符。 - lindes

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接