How to leave/exit/deactivate a python virtualenv?

I'm using virtualenv and the virtualenvwrapper. I can switch between virtualenv's just fine using the workon command.

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

However, how do I exit all virtual machines and workon my real machine again? Right now, the only way I have of getting back to

me@mymachine:~$ 

is to exit the shell and start a new one. That's kind of annoying. Is there a command to workon "nothing", and if so, what is it? If such a command does not exist, how would I go about creating it?


Usually, activating a virtualenv gives you a shell function named:

$ deactivate

which puts things back to normal.

Edit 1

I have just looked specifically again at the code for virtualenvwrapper, and, yes, it too supports deactivate as the way to escape from all virtualenvs.

Edit 2

If you are trying to leave an Anaconda environment, the procedure is a bit different: run the two-word command source deactivate since they implement deactivation using a stand-alone script.

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.

I defined an alias workoff as the opposite of workon:

alias workoff='deactivate'

Easy to remember:

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

$ deactivate 

If this doesn't work , try

$ source deactivate

Anyone who knows how bash source works will think that's odd, but some wrappers/workflows around virtualenv implement as a compliment/counterpart to source activate . YMMV

链接地址: http://www.djcxy.com/p/4074.html

上一篇: 在Python中创建一个单例

下一篇: 如何离开/退出/停用python virtualenv?