Skip to main content

Maîtriser les environnements virtuels Python : guide complet de venv, Docker et de la sécurisation de votre code

Écrit par
blog feature snyk container custom base recommendations

10 janvier 2024

0 minutes de lecture

Python, langage de programmation polyvalent et largement utilisé, dispose d’un vaste écosystème de modules et de packages. Pour vous y retrouver, il est important de comprendre le rôle des environnements virtuels. Dans cet article, nous verrons ce que sont les environnements virtuels, pourquoi les développeurs en ont besoin et quels outils courants permettent de créer des environnements virtuels Python.

Que sont les environnements virtuels ?

Un environnement virtuel est une arborescence de répertoires autonome qui contient une installation de Python pour une version donnée, ainsi qu’un certain nombre de packages supplémentaires. Les environnements virtuels permettent de séparer les dépendances utilisées par différents projets en créant des espaces isolés. Ainsi, chacun de vos projets peut avoir ses propres dépendances, indépendamment de celles des autres projets.

Voyons un exemple de création d’un environnement virtuel à l’aide du module intégré venv de Python :

$ python3 -m venv /path/to/new/virtual/environment

Dans la commande ci-dessus, vous pouvez remplacer /path/to/new/virtual/environment par le chemin de votre choix. Cette commande crée un répertoire s’il n’existe pas encore et configure un nouvel environnement virtuel à l’emplacement indiqué.

Pourquoi les développeurs ont besoin d’environnements virtuels

Lorsque vous travaillez sur plusieurs projets Python, chacun peut nécessiter différentes versions de Python et de packages Python. Tout installer à l’échelle du système peut entraîner des conflits de versions et d’autres problèmes. C’est là que les environnements virtuels entrent en jeu.

Les environnements virtuels permettent aux développeurs de travailler sur plusieurs projets Python sans se soucier des interdépendances. Ils offrent un espace isolé où installer Python et d’autres packages, afin que chaque projet dispose de ses propres dépendances, sans interférence avec celles des autres.

De plus, les environnements virtuels contribuent à la reproductibilité de vos projets. C’est particulièrement important lorsque vous travaillez en équipe et devez partager votre code.

Différents outils pour créer des environnements virtuels Python

Plusieurs outils permettent de créer des environnements virtuels Python. En voici quelques exemples :

venv : il s’agit d’une bibliothèque Python standard, disponible dans Python 3.3 et les versions ultérieures. Elle crée et gère un environnement virtuel.
Dans la commande ci-dessus, vous pouvez remplacer /path/to/new/virtual/environment par le chemin de votre choix. Cette commande crée un répertoire s’il n’existe pas encore et configure un nouvel environnement virtuel à l’emplacement indiqué.

$ python3 -m venv myenv

virtualenv : cet outil très populaire crée des environnements Python isolés. Plus ancien que venv, il offre davantage de fonctionnalités.

$ pip install virtualenv
$ virtualenv myenv

pipenv : cet outil vise à réunir les meilleurs aspects de la gestion des packages dans l’univers Python. Il regroupe Pipfile, pip et virtualenv dans une seule commande.

$ pip install pipenv
$ pipenv --three

En somme, les environnements virtuels sont indispensables au développement Python. Que vous soyez un développeur Python chevronné ou que vous débutiez, comprendre leur fonctionnement et les utiliser améliorera considérablement votre processus de développement.

Créer des environnements virtuels Python avec venv

Nous allons maintenant voir comment utiliser venv, un module intégré à Python, pour créer des environnements virtuels. Le recours aux environnements virtuels en Python est une bonne pratique pour isoler les dépendances propres à chaque projet et préserver un environnement de développement bien organisé. venv est donc un outil essentiel pour les développeurs et les spécialistes DevOps qui travaillent sur des applications Python.

Créer un environnement virtuel avec venv

La création d’un environnement virtuel avec venv est simple. Dans votre terminal, accédez au répertoire de votre projet et exécutez la commande suivante :

python3 -m venv myenv

Cette commande crée un nouveau répertoire nommé myenv dans le répertoire actuel. Celui-ci contient l’environnement virtuel, notamment l’interpréteur Python, la bibliothèque standard et divers fichiers auxiliaires.

Activer et utiliser l’environnement virtuel

Après avoir créé votre environnement virtuel, vous devez l’activer. Son activation modifie votre PATH afin que la commande python utilise la version de votre environnement virtuel plutôt que l’interpréteur Python global.

Vous pouvez activer l’environnement virtuel à l’aide de la commande suivante :

source myenv/bin/activate

Une fois l’environnement activé, l’invite de votre terminal change pour indiquer quel environnement est actif. Elle devrait ressembler à ceci :

(myenv) $

Vous pouvez maintenant installer des packages dans cet environnement sans modifier votre configuration Python globale.

Installer Python 3 dans l’environnement virtuel

Le module venv étant inclus dans Python 3.3 et les versions ultérieures, Python 3 est automatiquement installé dans l’environnement virtuel lors de sa création. Vous pouvez toutefois préciser une autre version de Python. Par exemple, pour créer un environnement avec Python 3.7, exécutez la commande suivante :

python3.7 -m venv myenv

Vérifier l’installation

Pour vérifier que Python 3 est installé dans votre environnement virtuel, vous pouvez exécuter la commande suivante :

python --version

Cette commande doit renvoyer la version de Python installée dans votre environnement.

N’oubliez pas : savoir créer et gérer des environnements virtuels avec venv est essentiel au développement Python. C’est un moyen efficace de gérer les dépendances propres à chaque projet et d’en garantir la cohérence et la fiabilité.

En bonus : configurer un environnement de développement Python local dans un conteneur Docker

Les conteneurs Docker permettent de créer des artefacts reproductibles et d’éviter les problèmes de versions liés à votre système d’exploitation. Voyons comment configurer un environnement de développement Python local avec Docker. Nous expliquerons ce qu’est Docker, ses avantages pour le développement Python, la création d’un Dockerfile, la compilation et l’exécution d’une application Python dans un conteneur Docker, puis la sécurisation de vos applications Python dans Docker avec Snyk.

Qu’est-ce que Docker ?

Docker est une plateforme open source qui automatise le déploiement, la mise à l’échelle et la gestion des applications. Elle encapsule les logiciels dans des unités standardisées appelées conteneurs, qui regroupent tout ce dont ils ont besoin pour fonctionner : bibliothèques, outils système, code et environnement d’exécution. Avec Docker, vous pouvez garantir la cohérence des environnements, du développement à la production.

Pourquoi utiliser Docker pour le développement Python ?

Docker présente plusieurs avantages pour le développement Python :

  • Cohérence : les conteneurs Docker garantissent que votre application s’exécute exactement de la même manière, quel que soit l’endroit où elle est déployée.

  • Isolation : Docker isole les dépendances de différents projets. Vous pouvez ainsi les gérer facilement et éviter les conflits entre projets.

  • Reproductibilité : les conteneurs Docker sont reproductibles, ce qui vous permet de partager facilement le même environnement avec d’autres personnes.

Créer un Dockerfile pour une application Python

Un Dockerfile est un script regroupant des commandes et des instructions pour créer une image Docker. Voici un exemple simple de Dockerfile pour une application Python :

FROM python:3.8

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "./your-python-script.py"]

Dans ce Dockerfile, nous partons d’une image Python 3.8. Nous copions ensuite le fichier requirements.txt dans l’image Docker et installons les dépendances Python. Puis nous copions le reste du code dans l’image Docker et définissons la commande qui exécutera l’application.

Compiler et exécuter une application Python dans un conteneur Docker

Après avoir créé un Dockerfile, vous pouvez compiler votre image Docker à l’aide de la commande docker build :

docker build -t your-python-app .

Cette commande crée une image Docker à partir de votre Dockerfile et lui attribue le nom your-python-app.

Pour exécuter l’application dans un conteneur Docker, utilisez la commande docker run :

docker run -p 8000:8000 your-python-app

Cette commande exécute votre application dans un conteneur Docker et associe le port 8000 du conteneur au port 8000 de votre machine.

Sécuriser vos applications Python dans Docker avec Snyk

Snyk vous aide à détecter et à corriger les vulnérabilités de sécurité dans vos images Docker. La solution s’intègre à votre pipeline CI/CD pour vérifier la sécurité de vos images Docker avant leur déploiement.

Pour utiliser Snyk, vous devez d’abord l’installer :

npm install -g snyk

Vous pouvez ensuite analyser votre image Docker à la recherche de vulnérabilités :

snyk test --docker your-python-app:latest --file=Dockerfile

Cette commande analyse votre image Docker et votre Dockerfile à la recherche de vulnérabilités. Si elle en détecte, Snyk vous fournit des informations détaillées et vous recommande des mesures correctives.

Je vous recommande vivement notre article détaillé sur les bonnes pratiques pour conteneuriser des applications Python avec Docker, l’utilisation de Snyk Advisor pour trouver des packages Python sains, sécurisés et bien entretenus sur PyPI, ainsi que l’utilisation de Snyk pour sécuriser vos applications Python.

Et ensuite ?

Pour finir, voici de nombreuses ressources qui vous permettront d’approfondir vos connaissances sur Python et la configuration de ses environnements virtuels.

Documentation de Pyenv

Pyenv est un outil simple, puissant et multiplateforme permettant de gérer plusieurs versions de Python. Sa documentation explique comment installer et utiliser Pyenv, et gérer des versions de Python avec cet outil.

Lien : Documentation de Pyenv

Documentation de Venv

Venv est un outil inclus dans Python 3.3 et les versions ultérieures, qui permet de créer des environnements Python isolés. Sa documentation explique comment créer, utiliser et gérer des environnements virtuels Python.

Lien : Documentation de Venv

Documentation de Docker

Docker est une plateforme qui permet aux développeurs de créer, partager et exécuter des applications dans des conteneurs. Sa documentation explique comment installer et utiliser Docker, ainsi que gérer les conteneurs.

Lien : Documentation de Docker

Autres ressources utiles

Vous trouverez ci-dessous des liens vers d’autres ressources utiles proposant des guides plus détaillés et pratiques sur l’installation de Python et la gestion des environnements virtuels Python.

Que vous soyez développeur ou spécialiste DevOps, ces ressources vous accompagneront dans votre parcours de développement logiciel.

Détectez et corrigez les vulnérabilités Python

Sécurisez vos applications grâce à l’analyse des vulnérabilités de Snyk et à ses conseils de correction. 

Aucune carte bancaire requise.

Ou inscrivez-vous avec Azure AD Docker ID Bitbucket

En utilisant Snyk, vous acceptez de respecter nos politiques, notamment nos Conditions d’utilisation et notre Politique de confidentialité.

Lire la suite

feature insights context
Blog

Les attaques autonomes sont déjà là. La défense doit suivre leur rythme.

Les attaquants autonomes réduisent la fenêtre de défense. Découvrez comment la découverte, la correction, la validation et la prévention continues peuvent aider les équipes de sécurité à suivre le rythme.

feature insights context
Blog

La prévention est-elle essentiellement un problème résolu ?

La prévention dans le code généré par les agents est résolue sur le plan architectural, mais le défi reste de choisir des contrôles qui protègent la sécurité sans ralentir le développement.

Live Stream

Les agents de remédiation démystifiés : pourquoi corriger vaut mieux que détecter

Découvrez comment l’agent de remédiation de Snyk utilise les renseignements de sécurité, l’analyse de la cassabilité et la validation pour transformer les vulnérabilités en pull requests prêtes à être fusionnées.