可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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?
回答1:
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.
回答2:
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 ~]$
回答3:
$ 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
回答4:
to activate python virtual environment:
$cd ~/python-venv/
$./bin/activate
to deactivate:
$deactivate
回答5:
You can use virtualenvwrapper
in order to ease the way you work with virtualenv
Installing virtualenvwrapper
pip install virtualenvwrapper
If you are using standard shell, open your ~/.bashrc
or ~/.zshrc
if you use oh-my-zsh. Add this two lines:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
To activate an existing virtualenv, use command workon:
$ workon myenv
(myenv)$
In order to deactivate your virtualenv:
(myenv)$ deactivate
Here is my tutorial, step by step in how to install virtualenv and virtualenvwrapper
回答6:
I use zsh-autoenv which is based off autoenv.
zsh-autoenv automatically
sources (known/whitelisted) .autoenv.zsh
files, typically used in
project root directories. It handles "enter" and leave" events,
nesting, and stashing of variables (overwriting and restoring).
Here is an example:
; 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
So when I leave the dtree
directory, the virtual environment is automatically exited.
回答7:
(my_env) basant@basant:~/EonTraining/my_env$ deactivate
use 'deactivate'
basant@basant-Lenovo-E40-80:~/EonTraining/my_env$
Gone (my_env);
回答8:
Had the same problem myself while working on an installer script, I took a look at what the bin/activate_this.py did and reversed it.
Example:
#! /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())
Not 100% sure if it works as intended, I may have missed something completely.
回答9:
Simply type the following command on the command line:
deactivate