Fonctionnant avec le système de Python et des bibliothèques vous limite à une fonction spécifique à la version de Python, choisi par le fournisseur de votre système d'exploitation. Essayez d'exécuter toutes les applications Python sur une installation de Python, il est probable que des conflits de version se fera parmi la collection de bibliothèques. Il est également possible que des changements dans le système Python casser d'autres fonctionnalités du système d'exploitation qui en dépendent.
Les environnements virtuels, ou "virtualenvs" sont légers, autonomes Python installations, conçu pour être mis en place avec un minimum de tracas, et à "travailler" sans exiger de la configuration complète ou des connaissances spécialisées.
virtualenv
évite le besoin d'installer les paquets Python à l'échelle mondiale. Lorsqu'un virtualenv est active, pip
va installer les paquets dans l'environnement, qui n'a pas d'incidence sur la base d'installation de Python en aucune façon.
En Python 3.3 ou ultérieure, vous pouvez créer un virtualenv comme suit:
$ python3 -m venv ENV_DIR
Pour Windows, vous devez remplacer l' python3
avec le chemin d'accès complet python.exe:
>C:\Python34\python.exe -m venv ENV_DIR
(Ceci est un exemple typique d'installation de Python; votre système peut varier.)
Dans les anciennes versions de Python, y compris Python 2, l'une des commandes suivantes devrait fonctionner dans la plupart des cas:
$ virtualenv ENV_DIR
$ venv ENV_DIR
$ pyvenv ENV_DIR
$ pyvenv3 ENV_DIR
ENV_DIR
doit être un répertoire inexistant. Le répertoire peut avoir n'importe quel nom, mais pour conserver ces instructions simples, je suppose que vous avez créé votre virtualenv dans un répertoire appelé venv
(par ex. avec de l' python3 -m venv ./venv
).
Votre travail dans le virtualenv, vous pouvez l'activer:
$ . ./venv/bin/activate
(venv)$
Ou utilisez ceci si vous avez un système windows:
$ venv\Scripts\activate
L' (venv)
dans l'invite du shell vous permet de savoir qui virtualenv vous avez activés, mais vous pouvez désactiver cette fonction si vous ne l'aimez pas. Vous pouvez exécuter toutes les commandes Python, et ils seront à proximité de votre virtualenv:
(venv)$ pip install requests numpy
[...]
(venv)$ python
[...]
>>> import requests
>>> import numpy as np
>>>
python
va exécuter la version de Python que vous avez installé dans votre virtualenv, de sorte que (par exemple) vous n'avez pas à taper python3
pour obtenir Python 3. Le Python qu'il fonctionne aurez accès à tous les modules de la bibliothèque standard et tous les paquets que vous avez installés dans le virtualenv, mais (par défaut) aucun des paquets installés sur le système-large site-packages
répertoire.
Cette dernière règle est importante: en limitant vos virtualenv à utiliser uniquement localement les paquets installés, vous pouvez vous assurer que vous contrôlez exactement qui dépendances de votre projet, même si certaines nouvelles à l'échelle du système de package est installé ou mis à jour la semaine prochaine. Si vous le désirez, vous pouvez obtenir une liste des paquets installés:
(venv)$ pip freeze
requests==2.13.0
numpy==1.12.0
(venv)$
pip
pouvez également analyser ce format et installer à partir d'elle, et il va installer la même version, même si les mises à jour ont été publiées dans l'intervalle:
(venv)$ pip freeze >requirements.txt
(some-other-venv)$ pip install -r requirements.txt
[...]
(some-other-venv)$ python
>>> import requests
>>> import numpy as np
>>>
Vous pouvez sortir de la virtualenv en le désactivant:
(venv)$ deactivate
$ python
[...]
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'requests'
Vous pouvez créer autant de virtualenvs que vous aimez, et ils ne seront pas interférer les uns avec les autres, ni avec votre système de paquets. Un virtualenv est "juste" un répertoire avec un tas de fichiers binaires et des scripts sous elle, de sorte que vous pouvez supprimer un virtualenv la même façon de supprimer un répertoire (rm -r venv
sur Unix). Si le virtualenv est activé lorsque vous le retirez, vous pouvez confondre votre shell, donc c'est probablement une bonne idée d' deactivate
premier dans ce cas.