Où créer des virtualenv?

107

Je ne sais pas où je devrais mettre mes virtualenvs.

Avec mon premier projet django, j'ai créé le projet avec la commande

django-admin.py startproject djangoproject

J'ai ensuite cd dans le répertoire djangoproject et ai exécuté la commande

virtualenv env

qui a créé le répertoire d'environnement virtuel au même niveau que le djangoprojectrépertoire interne .

Est-ce le mauvais endroit pour créer le virtualenv pour ce projet particulier?

J'ai l'impression que la plupart des gens gardent tous leurs virtualenv ensemble dans un répertoire complètement différent, par exemple ~/virtualenvs, et utilisent ensuite virtualenvwrapper pour basculer entre eux.

Existe-t-il une manière correcte de procéder?

Rayon
la source

Réponses:

128

De nombreuses personnes utilisent l' outil virtualenvwrapper , qui conserve tous les virtualenv au même endroit (le ~/.virtualenvsrépertoire) et permet des raccourcis pour les créer et les conserver. Par exemple, vous pouvez faire:

mkvirtualenv djangoproject

puis plus tard:

workon djangoproject

C'est probablement une mauvaise idée de conserver le répertoire virtualenv dans le projet lui-même, car vous ne voulez pas le distribuer (cela peut être spécifique à votre ordinateur ou à votre système d'exploitation). À la place, conservez un fichier requirements.txt en utilisant pip :

pip freeze > requirements.txt

et distribuez cela. Cela permettra aux autres utilisateurs de votre projet de réinstaller toutes les mêmes exigences dans leur virtualenv avec:

pip install -r requirements.txt
David Robinson
la source
gentil je n'avais jamais regardé dans les trucs de pip mais si j'ai besoin d'un jour cela me sera utile
Joran Beasley
pip est très populaire dans la communauté Django et très facile à utiliser.
David Robinson
Merci David, c'est un peu ce que je pensais. Je connaissais les exigences et je le fais. Je n'étais tout simplement pas sûr de savoir où le venv devrait aller. Votre commentaire selon lequel il est spécifique au système d'exploitation est une bonne justification pour faire ce que vous suggérez.
Ray
Est-il possible de déplacer un environnement virtuel après sa création? Je l'ai involontairement mis dans le répertoire de mon projet
James Wierzba
6
Pas une grande justification IMO. N'est-ce pas à cela que sert .gitignore?
Josh Noe
24

Changer l'emplacement du répertoire virtualenv le casse

C'est un avantage de placer le répertoire en dehors de l'arborescence du référentiel, par exemple sous ~/.virtualenvsavecvirutalenvwrapper .

Sinon, si vous le gardez dans l'arborescence du projet, le déplacement de l'emplacement du projet cassera le virtualenv.

Voir: Renommer un dossier virtualenv sans le casser

Il y en a, --relocatablemais on sait que ce n'est pas parfait.

Un autre avantage mineur: vous n'y êtes pas obligé .gitignore.

Les avantages de le mettre gitignored dans l'arborescence du projet lui-même sont:

  • garde les choses liées proches les unes des autres.
  • vous ne réutiliserez probablement jamais une virtualenv donnée dans les projets, donc la placer ailleurs ne donne pas beaucoup d'avantage
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
la source
3
C'est le seul argument raisonnable que j'ai vu pour créer des dossiers virtualenv en dehors des arborescences de projet! Un autre guide semble juste répéter le dogme de la «centralisation» comme s'il s'agissait intrinsèquement d'une meilleure pratique au lieu d'un compromis malheureux dû au fait que les virtualenvs sont fondamentalement cassés (bien que très utiles!).
rob3c
Désolé, quelque chose n'est pas clair pour moi, alors recommandez-vous de le créer dans l'arborescence du projet, puis de le «gitignorer» ou de le créer dans le ~ / .virtualenvs? À quoi se réfère «Si ce n'était pas pour ça»?
aderchox le
1
@aderchox il y a un compromis: mettez-le dans l'arborescence du projet et l'arborescence se déplace, vous devez le réinstaller, ou le mettre sur ~ mais gérer un sous-répertoire supplémentaire en dehors du projet.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
5

L'endroit généralement accepté pour les placer est le même endroit que l'installation par défaut de virtualenvwrapper les place: ~/.virtualenvs

Connexes: virtualenvwrapper est un excellent outil qui fournit des raccourcis pour les commandes virtualenv courantes. http://www.doughellmann.com/projects/virtualenvwrapper/

Emmett Butler
la source
0

Si vous utilisez pyenv install Python, pyenv-virtualenv sera une meilleure pratique. Si le .python-versionfichier est défini , il peut activer ou désactiver automatiquement l'environnement virtuel lorsque vous changez de dossier de travail. Pyenv-virtualenvmettez également tous les env virtuels dans le $HOME/.pyenv/versionsdossier.

Aston
la source
0

D'après mon expérience personnelle, je recommanderais d'organiser tous les environnements virtuels dans un seul répertoire. À moins que quelqu'un ait une mémoire extrêmement précise et puisse se souvenir des fichiers / dossiers dispersés dans le système de fichiers. Pas un grand fan de l'utilisation d'autres outils juste pour gérer des environnements virtuels. Dans VSCode, si je configure le python.venvPathrépertoire ( ) contenant tous les environnements virtuels, il peut tous les reconnaître automatiquement.

Tejas Sarade
la source