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?
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.
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 ~]$
$ 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
pour activer python environnement virtuel:
$cd ~/python-venv/
$./bin/activate
pour désactiver:
$deactivate
J'ai découvert que, dans un environnement Miniconda3, je devais exécuter:
conda deactivate
Ni deactivate
ni source deactivate
ne fonctionnaient pour moi.
Utilisez deactivate
.
(my_env) user@user:~/my_env$ deactivate
user@user-Lenovo-E40-80:~/my_env$
Remarque, (my_env)
est parti.
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
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
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é.