我正在使用virtualenv和virtualenvwrapper。我可以使用workon
命令在virtualenv之间切换。
me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$
但是,如何退出所有虚拟机并再次使用我的真机?现在,我回到
的唯一方法me@mymachine:~$
是退出shell并开始一个新的。那有点烦人。是否有一个“无所事事”的命令,如果有的话,它是什么?如果这样的命令不存在,我将如何创建它?
答案 0 :(得分:2104)
通常,激活virtualenv会为您提供一个名为:
的shell函数$ deactivate
让事情恢复正常。
我刚刚再次查看了virtualenvwrapper,
的代码,是的,它也支持deactivate
作为逃避所有虚拟现实的方法。
如果您尝试离开 Anaconda 环境,则过程略有不同:运行双字命令source deactivate
,因为它们使用独立脚本实现停用。 / p>
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.
答案 1 :(得分:38)
我将alias 工作日定义为与工作相反:
alias workoff='deactivate'
容易记住:
[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$
答案 2 :(得分:38)
$ deactivate
如果这不起作用,请尝试
$ source deactivate
任何知道bash source
如何工作的人会认为这很奇怪,但围绕virtualenv的一些包装/工作流实现为source activate
的赞美/对应。 YMMV
答案 3 :(得分:11)
激活python虚拟环境:
$cd ~/python-venv/
$./bin/activate
停用:
$deactivate
答案 4 :(得分:4)
由于无法通过在deactivate
中查找这样的命令的常用方法来发现通过采购~/bin/activate
创建的~/bin
函数,因此您可能希望创建一个仅执行该函数的命令deactivate
。
问题在于,如果包含一个命令deactivate
的脚本deactivate
不在venv中意外执行,将导致无限循环。一个常见的错误。
只有在函数存在(即已通过采购deactivate
创建)的情况下才执行activate
,可以避免这种情况。
#!/bin/bash
declare -Ff deactivate && deactivate
答案 5 :(得分:2)
您可以使用<form>
<input type="email" id="email" placeholder="Please enter email" required>
<input type="submit" class="btn" onclick="downloadWin()" value="Windows">
<input type="submit" class="btn" onclick="downloadOsx()" value="Osx">
</form>
<script>
function downloadWin(){
event.preventDefault();
var email = $("#email").val();
if(email != ''){
if(validateEmail(email)){
location.href='http://s/index.php?page=downloadWin&email='+email;
}
}
}
function downloadOsx(){
event.preventDefault();
var email = $("#email").val();
if(email != ''){
if(validateEmail(email)){
location.href='http://s/index.php?page=downloadOsx&email='+email;
}
}
}
</script>
来简化您使用virtualenvwrapper
安装virtualenv
virtualenvwrapper
如果您使用的是标准外壳,请在使用oh-my-zsh时打开pip install virtualenvwrapper
或~/.bashrc
。添加以下两行:
~/.zshrc
要激活现有的virtualenv,请使用命令workon:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
为了停用你的virtualenv:
$ workon myenv
(myenv)$
这是我的tutorial,如何安装virtualenv和virtualenvwrapper一步一步
答案 6 :(得分:2)
使用deactivate
。
(my_env) user@user:~/my_env$ deactivate
user@user-Lenovo-E40-80:~/my_env$
注意,(my_env)
已消失。
答案 7 :(得分:2)
使用venv的deactivate
脚本提供的activate
功能要求您信任正确编码的停用功能,以将所有环境变量完全重置为原来的状态之前-不仅考虑了原始激活,而且还考虑了任何开关,配置或其他工作可能与此同时。
可能很好,但是确实会带来一种新的,非零的风险,即事后修改环境。
但是,从技术上讲,一个进程不可能直接更改其父级的环境变量,因此我们可以使用单独的子shell来绝对确保我们的venv
不会留下任何残留更改:
$ bash --init-file PythonVenv/bin/activate
venv
周围启动一个新的shell。您原来的bash
外壳仍未修改。 $ exit
或[CTRL]
+ [D]
venv
所在的整个外壳,并使您回到激活脚本对环境进行任何更改之前的原始外壳。[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!
[user@computer ~]$ bash --init-file PythonVenv/bin/activate
(PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV
/home/user/PythonVenv
(PythonVenv) [user@computer ~]$ exit
exit
[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!
答案 8 :(得分:1)
运行 deactivate [name of your environment]
可以退出/停用 Python 环境。
以 python3.6 Windows 10 为例:
PS C:\Users\kyrlon\Desktop> py -m venv env1
PS C:\Users\kyrlon\Desktop> .\env1\Scripts\activate
(env1) PS C:\Users\kyrlon\Desktop> deactivate env1
PS C:\Users\klongwood3\Desktop> py -m venv env1
在 Linux Ubuntu 20.04 LTS 桌面上使用 python3.9 的示例:
kyrlon@pc1:~$ python3 -m venv venv1
kyrlon@pc1:~$ source venv1/bin/activate
(venv1) kyrlon@pc1:~$ deactivate venv1
kyrlon@pc1:~$
答案 9 :(得分:0)
我使用基于zsh-autoenv的autoenv。
自动zsh-autoenv 源(已知/已列入白名单)
.autoenv.zsh
文件,通常用于 项目根目录。它处理&#34;进入&#34;并离开&#34;事件, 嵌套和存储变量(覆盖和恢复)。
以下是一个例子:
; 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
目录时,将自动退出虚拟环境。
答案 10 :(得分:0)
我发现在Miniconda3环境中时,我必须运行:
video {
display: block;
margin: auto;
}
conda deactivate
和deactivate
都不适合我。
答案 11 :(得分:0)
这非常简单,您可以停用虚拟环境
conda deactivate
source deactivate
答案 12 :(得分:0)
对于我的特殊情况,我转到工作目录
CD /myworkingdirectory
然后我像这样激活我的环境:
my-env/scripts/activate
从同一个工作文件夹 (/myworkingdirectory
) 停用,我尝试了这个,但它什么也没做:
my-env/scripts/deactivate
这确实有效:
deactivate
答案 13 :(得分:0)
要激活 Python 虚拟环境:
source venv/bin/activate
注意:这里的“venv”是您的 virtualenvironment
文件夹名称
停用:
`deactivate` or `source deactivate`
答案 14 :(得分:-1)
在处理安装程序脚本时遇到同样的问题,我看了一下 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%确定它是否按预期工作,我可能完全错过了一些东西。