我最初很高兴看到我的终端提示符带有前缀,(venv)
因为我在我学习python的文件夹中,并且在那个文件夹中,我创建了一个./venv
文件夹来保存我的虚拟环境,我似乎已经能够激活它。
今天我惊恐地发现,它现在(venv)
在我的计算机上我所访问的所有其他地方都加上了我的提示前缀。
问题
- 这是创建虚拟环境时的标准/预期行为吗?为什么?这些其他文件夹甚至不是 Python 项目。
- 我该如何停止这种疯狂的行为/将 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/