我正在使用virtualenv和virtualvwrapper。我可以使用workon命令在virtualenv之间切换。

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$ 

如何退出所有虚拟环境并再次使用系统环境?现在,我唯一能回到me@mymachine:~$是退出shell并开始新的shell。这有点烦人。是否有命令处理“无”,如果有,是什么?如果不存在这样的命令,我将如何创建它?


当前回答

对于我的特定情况,我转到工作目录

CD /myworkingdirectory

然后我像这样激活env:

my-env/scripts/activate

从要停用的同一个工作文件夹(/myworkingdirectory)中,我尝试了此操作,但它无效:

my-env/scripts/deactivate

这确实有效:

deactivate

其他回答

$conda停用或$source停用会起作用。如果不起作用,请尝试停用[环境名称]。

您可以使用virtualvwrapper来简化使用virtualenv的方式。

安装virtualvwrapper:

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和virtualvwrapper。

由于在~/bin中查找此类命令的常规方法无法发现通过sourcing ~/bin/activate创建的停用函数,因此您可能希望创建一个只执行函数deactivate的函数。

问题是,一个名为deactivate的脚本包含一个单独的命令deactivate,如果在不在venv中的情况下意外执行,将导致无休止的循环。一个常见的错误。

如果功能存在(即通过源激活创建),则只执行停用即可避免这种情况。

#!/bin/bash

declare -Ff deactivate  && deactivate

要激活Python虚拟环境,请执行以下操作:

$cd ~/python-venv/
$./bin/activate

要停用:

$deactivate

Use:

$ deactivate 

如果这不起作用,请尝试

$ source deactivate

任何了解Bash源代码工作原理的人都会认为这很奇怪,但围绕virtualenv的一些包装器/工作流将其实现为源代码激活的补充/对应。您的里程数可能有所不同。