(venv)所有目录中 bash 终端提示符上的前缀

(venv)所有目录中 bash 终端提示符上的前缀

我最初很高兴看到我的终端提示符带有前缀,(venv)因为我在我学习python的文件夹中,并且在那个文件夹中,我创建了一个./venv文件夹来保存我的虚拟环境,我似乎已经能够激活它。

今天我惊恐地发现,它现在(venv)在我的计算机上我所访问的所有其他地方都加上了我的提示前缀。

问题

  1. 这是创建虚拟环境时的标准/预期行为吗?为什么?这些其他文件夹甚至不是 Python 项目。
  2. 我该如何停止这种疯狂的行为/将 python-env 的感知限制在相关目录中?

echo $PS1给出:

(venv) \u@\h \[\]\w\[\] \[\]$git_branch\[\]$git_dirty\[\]$

grep -i PS1 ~/.*.rc* ~/.*bash* ~/.profile给出:

/home/me/.bashrc:    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
/home/me/.bashrc:    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
/home/me/.bashrc:    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
/home/me/.bashrc:export PS1="\u@\h \[$txtgrn\]\w\[$txtrst\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "

我愿意不是回想一下编辑任何文件,例如 bash_profile .bashrc .profile 等等。

谢谢!

更新

我不知道这是否有帮助,但我突然想到检查我的历史记录中是否有与 venv 相关的内容:

 1034  python3 -m venv venv
 1035  python3 -m venv ./venv
 1037  rm -rf venv/
 1040  python3 -m venv ./venv
 1042  ll venv/
 1043  ll venv/bin/
 1044  rm -rf venv
 1045  python3 -m venv --without-pip ./venv
 1046  ll venv/bin/
 1047  source ./venv/bin/activate
 1085  history grep "venv"
 1086  history | grep "venv"

这些命令有错误吗?

答案1

命令:

source ./venv/bin/activate

正在更新你的提示(它只是一组 shell 命令,因此请随意cat查看它具体在做什么)以显示虚拟环境的名称,并且它将保留在你的提示上,直到你使用以下命令卸载它:

deactivate

原因是,无论您位于哪个目录中,您的环境(即您的 PATH)仍然指向虚拟环境内的 python 解释器。您可以通过运行以下命令来查看:

which python3

请注意,虚拟环境的命令将与解释器deactivate位于同一目录中。bin/

相关内容