J'ai vérifié le script d' activation et il me semble qu'il ne fait que:
- définir VIRTUAL_ENV env
- ajouter $ VIRTUAL_ENV / bin devant PATH
Comment virtualenv
fournit-il cet environnement virtuel magique par ceux-ci? Qu'est-ce que je manque
J'ai vérifié le script d' activation et il me semble qu'il ne fait que:
Comment virtualenv
fournit-il cet environnement virtuel magique par ceux-ci? Qu'est-ce que je manque
Je vais décrire les processus de base, de qui j'ai appris à partir de la présentation qui jcollado liés.
Quand Python commence, il regarde le chemin du binaire, et les préfixes de celle-ci. Donc, disons que votre virtualenv est - /home/blah/scratch
. Ensuite, le python binaire (qui est juste une copie de votre python système binaire) sera en /home/blah/scratch/bin/python
. Python recherche pour lib/pythonX.X/os.py
en /home/blah/scratch/bin/
, alors /home/blah/scratch/
, et ça s'arrête là, car /home/blah/scratch/lib/pythonX.X/os.py
existe. Si elle n'a pas, Python serait de les garder à la recherche pour /home/blah/lib/pythonX.X/os.py
, etc. Il définit ensuite sys.prefix
sur cette base. Il utilise un procédé similaire à définir sys.exec_prefix
, puis sys.path
est construit sur la base de ces.
Il s'agit d'une très bonne présentation sur le sujet. Fondamentalement, il explique les étapes pour écrire votre propre virtualenv
avec les mêmes astuces utilisées par Ian Bicking pour l'écrire.
virtualenv myenv
. Cela crée un répertoire appelé myenv et copies le python système binaire à myenv/bin. Il ajoute également d'autres fichiers et répertoires nécessaires à myenv, y compris un script d'installation dans bin/activate et une lib sous-répertoire pour les modules et packages.. myenv/bin/activate
, ce qui définit la coque PATH
variable d'environnement afin de commencer avec myenv/bin.python
de cette enveloppe, il va exécuter la copie de l'exécutable stocké dans myenv/bin. Même si le binaire est identique à celui dans /usr/bin/python, le standard de python binaire est destinée à la recherche pour les packages et modules dans des répertoires qui sont relatifs à l'binaire du chemin (cette fonctionnalité n'est pas liée à virtualenv). Il se regarde dans ../lib/pythonX.Y où X et Y sont les majeures et mineures les numéros de version de python binaire. Alors maintenant, il est à la recherche de myenv/lib/pythonX.Y.pip
, de sorte que lorsque l'utilisateur installe de nouveaux packages à l'aide de pip dans le virtualenv, ils seront installés dans myenv/lib/pythonX.Y
Cet article traite de python et django avec linux. http://www.saltycrane.com/blog/2009/05/notes-using-pip-and-virtualenv-django/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.