我使用的是虚拟环境和virtualenvwrapper来.我可以交换机之间的虚拟环境的很好用 workon 命令。

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

然而,我怎么退出所有虚拟机和workon我真机了吗?现在,只有这样我取回来

me@mymachine:~$ 

是退出壳,并开始一个新。这是一种令人讨厌。是否有一个命令workon"没什么",如果是,它是什么?如果这样的命令不存在,我怎么会去创建它?

有帮助吗?

解决方案

通常,激活的virtualenv给你命名为壳功能:

$ deactivate

这使事情恢复正常。

我刚才在为virtualenvwrapper,代码专门看了一遍,没错,它也支持deactivate从所有virtualenvs逃避的方式。

如果你想留下的蟒蛇的环境中,过程有些不同:运行两个字的命令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 作为workon的相反:

alias workoff='deactivate'

易于记住:

[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$
$ deactivate 

如果这不起作用,尝试

$ source deactivate

任何谁知道如何庆典source 作品会觉得奇怪,但一些包装/周围的工作流程的virtualenv实现一种恭维/对应物source activate。 YMMV

要激活蟒虚拟环境:

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

停用:

$deactivate

我发现,当Miniconda3环境内我不得不运行:

conda deactivate

无论deactivate也不source deactivate为我工作。

您可以以缓解你virtualenvwrapper的工作方式使用virtualenv

安装virtualenvwrapper

pip install virtualenvwrapper

如果您使用的是标准的外壳,如果你使用哦,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步骤

使用deactivate

(my_env) user@user:~/my_env$ deactivate
user@user-Lenovo-E40-80:~/my_env$ 

请注意,(my_env)不见了。

由于由采购deactivate创建的~/bin/activate功能不能通过的寻找~/bin这样的命令的惯用手段被发现,则可能希望创建一个只执行函数deactivate

的问题是,含有单一命令deactivate脚本命名deactivate会造成死循环,如果虽然未在VENV意外执行。一个常见的错误。

这可以通过函数是否只存在执行deactivate(即已经被采购activate创建)。

,可以避免
#!/bin/bash

declare -Ff deactivate  && deactivate

我用 aix系统管理的各个方面和扩展-autoenv 这是基于关闭 autoenv.

aix系统管理的各个方面和扩展-autoenv 自动 来源(已知的/已列入白名单) .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 目录、虚拟环境中的自动退出。

有同样的问题我自己上的安装脚本工作时,我在拍了一下什么的斌确实/ 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%肯定它是否如预期运作,我可能已经彻底错过了一些东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top