协慌网

登录 贡献 社区

如何离开 / 退出 / 停用 Python virtualenv

我正在使用 virtualenv 和 virtualenvwrapper。我可以使用workon命令在 virtualenv 之间切换。

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$

但是,如何退出所有虚拟机并再次使用我的真机?现在,我回到的唯一方法

me@mymachine:~$

是退出 shell 并开始一个新的。那有点烦人。是否有一个 “无所事事” 的命令,如果有的话,它是什么?如果这样的命令不存在,我将如何创建它?

答案

通常,激活 virtualenv 会为您提供一个名为的 shell 函数:

$ deactivate

这让事情恢复正常。

编辑 1

我刚刚再次看了virtualenvwrapper,的代码,是的,它也支持deactivate作为逃避所有 virtualenvs 的方法。

编辑 2

如果您尝试离开Anaconda环境,则过程略有不同:运行双字命令source deactivate因为它们使用独立脚本实现停用。

bash-4.3$ deactivate
pyenv-virtualenv: deactivate must be sourced. Run 'source deactivate' instead of 'deactivate'
bash-4.3$ source deactivate
pyenv-virtualenv: no virtualenv has been activated.

我将别名 workoff定义为workon的反义词:

alias workoff='deactivate'

容易记住:

[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$
$ deactivate

如果这不起作用,请尝试

$ source deactivate

任何知道bash source如何工作的人都会认为这很奇怪,但围绕 virtualenv 的一些包装器 / 工作流实现为source activate的补充 / 对应。因人而异