如何离开/出口/停用蟒蛇的虚拟环境
-
13-09-2019 - |
题
我使用的是虚拟环境和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%肯定它是否如预期运作,我可能已经彻底错过了一些东西。