通常,激活virtualenv会为您提供一个名为的shell函数:
$ deactivate
这让事情恢复正常。
我刚才再次专门看了代码 virtualenvwrapper, 而且,是的,它也支持 deactivate 作为摆脱所有虚拟的方式。
virtualenvwrapper,
deactivate
如果你想留下一个 蟒蛇 环境,程序有点不同:运行双字命令 source deactivate 因为他们使用独立脚本实现停用。
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.
如果这不起作用,请尝试
$ source deactivate
任何知道如何的人 庆典 source 作品会认为这很奇怪,但围绕virtualenv的一些包装/工作流程实现为赞美/对应 source activate 。因人而异
source
source activate
我用 zsh的-autoenv 这基于 autoenv 。
zsh的-autoenv 自动 来源(已知/已列入白名单) .autoenv.zsh 文件,通常用于 项目根目录。它处理“进入”并离开“事件, 嵌套和存储变量(覆盖和恢复)。
.autoenv.zsh
这是一个例子:
; 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 目录,虚拟环境自动退出。
dtree
您可以使用 virtualenvwrapper 为了方便您的工作方式 virtualenv
virtualenvwrapper
virtualenv
安装 virtualenvwrapper
pip install virtualenvwrapper
如果您使用的是标准外壳,请打开您的 ~/.bashrc 要么 ~/.zshrc 如果你使用oh-my-zsh。添加这两行:
~/.bashrc
~/.zshrc
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
要激活现有的virtualenv,请使用命令workon:
$ workon myenv (myenv)$
为了停用你的virtualenv:
(myenv)$ deactivate
这是我的 教程 ,如何安装virtualenv和virtualenvwrapper一步一步
激活python虚拟环境:
$cd ~/python-venv/ $./bin/activate
停用:
$deactivate
我定义了一个 别号 的 workoff 强> 与workon相反:
alias workoff='deactivate'
容易记住:
[bobstein@host ~]$ workon django_project (django_project)[bobstein@host ~]$ workoff [bobstein@host ~]$
使用 deactivate 。
(my_env) user@user:~/my_env$ deactivate user@user-Lenovo-E40-80:~/my_env$
注意, (my_env) 离开了。
(my_env)
在处理安装程序脚本时我自己也有同样的问题,我看了一下 斌/ 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%确定它是否按预期工作,我可能完全错过了一些东西。