如何离开/退出/停用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);