|
@@ -4,8 +4,7 @@ Environnements virtuels |
|
|
La solution est d'utiliser un environnement virtuel (*virtualenv* en |
|
|
La solution est d'utiliser un environnement virtuel (*virtualenv* en |
|
|
abrégé). C'est un répertoire *isolé* du reste du système. |
|
|
abrégé). C'est un répertoire *isolé* du reste du système. |
|
|
|
|
|
|
|
|
Il se crée par exemple avec la commande ``python3 -m venv foo-venv``. où |
|
|
|
|
|
``foo-venv`` est un répertoire quelconque. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aparté : python3 -m venv sur Debian |
|
|
Aparté : python3 -m venv sur Debian |
|
|
------------------------------------ |
|
|
------------------------------------ |
|
@@ -153,16 +152,52 @@ de commandes: |
|
|
|
|
|
|
|
|
Pour sortir du virtualenv, entrez la commande ``deactivate``. |
|
|
Pour sortir du virtualenv, entrez la commande ``deactivate``. |
|
|
|
|
|
|
|
|
Conclusion |
|
|
|
|
|
---------- |
|
|
|
|
|
|
|
|
Les environnements virtuels en pratique |
|
|
|
|
|
---------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Le système de gestions des dépendances de Python peut paraître compliqué |
|
|
Le système de gestions des dépendances de Python peut paraître compliqué |
|
|
et bizarre, surtout venant d'autres langages. |
|
|
et bizarre, surtout venant d'autres langages. |
|
|
|
|
|
|
|
|
Mon conseil est de toujours suivre ces deux règles: |
|
|
Mon conseil est de toujours suivre ces deux règles: |
|
|
|
|
|
|
|
|
* Un virtualenv par projet et par version de Python |
|
|
|
|
|
|
|
|
* Un virtualenv par projet |
|
|
* Toujours utiliser ``pip`` *depuis* un virtualenv |
|
|
* Toujours utiliser ``pip`` *depuis* un virtualenv |
|
|
|
|
|
|
|
|
Certes, cela peut paraître fastidieux, mais c'est une méthode qui vous |
|
|
Certes, cela peut paraître fastidieux, mais c'est une méthode qui vous |
|
|
évitera probablement de vous arracher les cheveux (croyez-en mon expérience). |
|
|
évitera probablement de vous arracher les cheveux (croyez-en mon expérience). |
|
|
|
|
|
|
|
|
|
|
|
Voici un exemple d'arborescence qui montre deux projets, |
|
|
|
|
|
``projet-1`` et ``projet-2``, chacun avec son virtualenv |
|
|
|
|
|
dédié: |
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: text |
|
|
|
|
|
|
|
|
|
|
|
projets |
|
|
|
|
|
├── projet-1 |
|
|
|
|
|
│ ├── projet_1.py |
|
|
|
|
|
│ └── .venv |
|
|
|
|
|
│ ├── bin |
|
|
|
|
|
│ ├── include |
|
|
|
|
|
│ ├── lib |
|
|
|
|
|
│ └── ... |
|
|
|
|
|
└── projet-2 |
|
|
|
|
|
├── projet_2.py |
|
|
|
|
|
└── .venv |
|
|
|
|
|
├── bin |
|
|
|
|
|
├── include |
|
|
|
|
|
├── lib |
|
|
|
|
|
└── ... |
|
|
|
|
|
|
|
|
|
|
|
Notez bien que les sources de chaque projet ``projet_1.py`` et ``projet_2.py`` |
|
|
|
|
|
sont au même niveau que le répertoire ``.venv`` et non à l'intérieur |
|
|
|
|
|
de celui-ci. |
|
|
|
|
|
|
|
|
|
|
|
Vous pouvez aussi retenir la règle suivante : étant donné un réportoire |
|
|
|
|
|
"X" contenant les sources d'un projet, les commandes à lancer pour créer |
|
|
|
|
|
le virtualenv seront: |
|
|
|
|
|
|
|
|
|
|
|
.. code-block:: console |
|
|
|
|
|
|
|
|
|
|
|
cd <X> |
|
|
|
|
|
python3 -m venv .venv |