如何离开/退出/停用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并开始一个新的。 这有点烦人。 有没有一个“没有”的命令,如果是的话,那是什么? 如果这样的命令不存在,我将如何去创build它?
通常,激活一个virtualenv会给你一个名为:
 $ 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作为运作的反面:
 alias workoff='deactivate' 
容易记住:
 [bobstein@host ~]$ workon django_project (django_project)[bobstein@host ~]$ workoff [bobstein@host ~]$ 
激活python虚拟环境:
 $cd ~/python-venv/ $./bin/activate 
停用:
 $deactivate 
 $ deactivate 
如果这不起作用,请尝试
 $ source deactivate 
 任何知道bash source作品的人都会觉得这很奇怪,但是一些关于virtualenv的包装/工作stream实现为source activate的恭维/对应。 因人而异 
 你可以使用virtualenvwrapper来减轻你使用virtualenvwrapper的方式 
 安装virtualenvwrapper 
 pip install virtualenvwrapper 
 如果你使用标准的shell,打开你的~/.bashrc或~/.zshrc如果你使用了oh-my-zsh。 添加这两行: 
 export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 
要激活现有的virtualenv,请使用命令workon:
 $ workon myenv (myenv)$ 
为了停用你的virtualenv:
 (myenv)$ deactivate 
这里是我的教程 ,一步一步如何安装virtualenv和virtualenvwrapper
在处理安装脚本的时候自己也遇到了同样的问题,我查看了bin / activate_this.py做了什么,并将其反转。
例:
 #! /usr/bin/python # -*- coding: utf-8 -*- import os import sys # path to virtualenv venv_path = os.path.join('/home', 'sixdays', '.virtualenvs', 'test32') # Save old values old_os_path = os.environ['PATH'] old_sys_path = list(sys.path) old_sys_prefix = sys.prefix def deactivate(): # Change back by setting values to starting values os.environ['PATH'] = old_os_path sys.prefix = old_sys_prefix sys.path[:0] = old_sys_path # Activate the virtualenvironment activate_this = os.path.join(venv_path, 'bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this)) # Print list of pip packages for virtualenv for example purpose import pip print str(pip.get_installed_distributions()) # Unload pip module del pip # deactive/switch back to initial interpreter deactivate() # print list of initial environment pip packages for example purpose import pip print str(pip.get_installed_distributions()) 
不是100%确定它是否按预期工作,我可能完全错过了一些东西。
我使用基于autoenv的 zsh- autoenv 。
zsh-autoenv自动来源(已知/列入白名单)
.autoenv.zsh文件,通常在项目根目录中使用。 它处理“进入”和“离开”事件,嵌套和variables存储(覆盖和恢复)。
这里是一个例子:
 ; cd dtree Switching to virtual environment: Development tree utiles ;dtree(feature/task24|✓); cat .autoenv.zsh # Autoenv. echo -n "Switching to virtual environment: " printf "\e[38;5;93m%s\e[0m\n" "Development tree utiles" workon dtree # eof dtree(feature/task24|✓); cat .autoenv_leave.zsh deactivate 
 所以,当我离开dtree目录时,虚拟环境会自动退出。 
(my_env)basant @ basant:〜/ EonTraining / my_env $停用
使用“停用”
巴桑特@巴桑特联想-E40-80:〜/ EonTraining / my_env $
去(my_env);