web-dev-qa-db-fra.com

Comment quitter / quitter / désactiver un Python virtualenv

J'utilise virtualenv et le virtualenvwrapper. Je peux très bien passer de virtualenv à l’aide de la commande workon.

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

Cependant, comment puis-je quitter toutes les machines virtuelles et travailler à nouveau sur ma vraie machine? En ce moment, la seule façon dont je dispose pour revenir à

me@mymachine:~$ 

est de quitter le shell et en démarrer un nouveau. C'est un peu ennuyeux. Existe-t-il un ordre de travail sur "rien" et si oui, de quoi s'agit-il? Si une telle commande n'existe pas, comment pourrais-je m'y prendre pour la créer?

1372
Apreche

Habituellement, l'activation de virtualenv vous donne une fonction Shell nommée:

$ deactivate

ce qui remet les choses à la normale.

Je viens de regarder de nouveau le code pour virtualenvwrapper, et, oui, il prend également en charge deactivate comme moyen d’échapper à tous les virtualenv.

Si vous essayez de quitter un environnement Anaconda, la procédure est un peu différente: exécutez la commande à deux mots source deactivate car ils implémentent la désactivation à l'aide d'un script autonome.

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.
2219
Brandon Rhodes

J'ai défini un alias workoff comme l'opposé de workon:

alias workoff='deactivate'

Facile à retenir:

[bobstein@Host ~]$ workon Django_project
(Django_project)[bobstein@Host ~]$ workoff
[bobstein@Host ~]$
42
Bob Stein
$ deactivate 

Si cela ne fonctionne pas, essayez

$ source deactivate

Quiconque sait comment bash source pense que c'est étrange, mais certains wrappers/workflows autour de virtualenv sont implémentés comme complément/contrepartie de source activate. YMMV

41
DarkRider

pour activer python environnement virtuel:

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

pour désactiver:

$deactivate
12
Amitesh Ranjan

J'ai découvert que, dans un environnement Miniconda3, je devais exécuter:

conda deactivate

Ni deactivate ni source deactivate ne fonctionnaient pour moi.

4
CephBirk

Utilisez deactivate.

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

Remarque, (my_env) est parti.

2
Basant Rules

Vous pouvez utiliser virtualenvwrapper pour faciliter votre travail avec virtualenv

Installation de virtualenvwrapper

pip install virtualenvwrapper

Si vous utilisez un shell standard, ouvrez votre ~/.bashrc ou ~/.zshrc si vous utilisez oh-my-zsh. Ajoutez ces deux lignes:

export WORKON_HOME=$HOME/.virtualenvs  
source /usr/local/bin/virtualenvwrapper.sh

Pour activer un virtualenv existant, utilisez la commande workon:

$ workon myenv
(myenv)$

Pour désactiver votre virtualenv:

(myenv)$ deactivate

Voici mon tutorial , étape par étape pour installer virtualenv et virtualenvwrapper

2
levi

Puisque la fonction deactivate créée par le sourcing ~/bin/activate ne peut pas être découverte par les moyens habituels de recherche d'une telle commande dans ~/bin, vous pouvez en créer une qui n'exécute que la fonction deactivate.

Le problème est qu’un script nommé deactivate contenant une seule commande deactivate provoquera une boucle sans fin s’il est exécuté par inadvertance alors qu’il n’est pas dans la veine. Une erreur commune.

Ceci peut être évité en exécutant uniquement deactivate si la fonction existe (c’est-à-dire qu’elle a été créée à l’aide de la source activate).

#!/bin/bash

declare -Ff deactivate  && deactivate
1
DocSalvager

J'utilise zsh-autoenv qui est basé sur autoenv .

zsh-autoenv fichiers source automatiquement (connus/figurant sur la liste blanche) .autoenv.zsh, généralement utilisés dans les répertoires racine du projet. Il gère les événements "entrer" et "quitter", l'imbrication et le stockage de variables (écrasement et restauration).

Voici un exemple:

; 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

Ainsi, lorsque je quitte le répertoire dtree, l'environnement virtuel est automatiquement quitté.

0
Sardathrion