Skip to main content

Outils de gestion des dépendances pour Python

Écrit par
Headshot of Hayley Denbraver

Hayley Denbraver

Python feature

15 avril 2020

0 minutes de lecture

La gestion des dépendances est essentielle à la santé de votre projet Python. Un projet dont les dépendances sont bien gérées bénéficie d’une meilleure prévisibilité, d’une plus grande pérennité et d’une sécurité renforcée. Des dépendances bien gérées garantissent un comportement prévisible dans les environnements local, de développement et de production. Si vos dépendances sont bien gérées, vous ne risquez pas de vous retrouver confronté à la fin du support à long terme ni avec des dépendances incompatibles entre elles. Une bonne gestion des dépendances consiste aussi à connaître tous les packages que vous utilisez, directement ou indirectement, à comprendre les éventuels problèmes de sécurité et à prendre les mesures nécessaires pour les corriger.

Il peut être difficile de bien gérer les dépendances, et plusieurs options s’offrent à vous pour résoudre ce problème dans votre projet Python. Nous allons en présenter quelques-unes ici, afin de simplifier au maximum la gestion des dépendances.

Quelles sont les options de gestion des dépendances en Python ?

Venv

Le module venv fait partie de la bibliothèque standard de Python depuis la version 3.3. Si Python 3.3 ou une version ultérieure est installé sur votre machine, vous disposez de venv. Ce module sert à créer des environnements virtuels, qui possèdent leur propre installation de Python, correspondant à la version utilisée pour créer l’environnement. Pour en savoir plus sur la création d’un environnement avec venv, son activation et l’installation de packages, consultez la documentation officielle de Python. Venv est simple d’utilisation, léger et constitue un excellent choix pour de nombreux projets Python.

Virtualenv

Virtualenv est une bibliothèque tierce qui crée des environnements virtuels et peut être utilisée avec les anciennes versions de Python. De nombreux développeurs sont passés à `venv` après son intégration à la bibliothèque standard de Python 3.3. La prise en charge de Python 2.7 a pris fin au début de 2020, et nous déconseillons son utilisation. Toutefois, si vous avez un projet qui utilise Python 2.7, vous pouvez créer des environnements virtuels avec virtualenv. Virtualenv propose également des fonctionnalités absentes de venv, et certains passionnés de Python l’utilisent donc aussi pour leurs projets Python 3. Parmi ces fonctionnalités : la possibilité de le mettre à niveau avec pip, des améliorations de vitesse et une API riche. Au moment de la rédaction de cet article, virtualenv est activement maintenu et sa dernière version date d’avril 2020. Il est peut-être souvent associé à Python 2.7, mais il est toujours bien vivant et compatible avec Python 3.

Pipenv

Pipenv est une solution de gestion des dépendances qui propose plusieurs fonctionnalités supplémentaires. Sa principale particularité est d’utiliser un fichier de verrouillage pour garantir des builds déterministes. Il offre également des fonctionnalités avancées : spécification d’un index de packages, détection des vulnérabilités de sécurité, gestion simplifiée des variables d’environnement et compatibilité avec Windows. Au moment de la rédaction de cet article, la dernière version de Pipenv date de fin 2018. Comme Pipenv n’a pas été mis à jour depuis un an et demi, certains passionnés de Python pourraient hésiter à l’utiliser. Je trouve cet outil facile à utiliser, mais j’hésiterais à l’adopter pour un projet sur lequel je prévois de travailler à long terme.

Poetry

Poetry est un outil de gestion des dépendances et de packaging pour Python. Comme Pipenv, Poetry utilise un système de fichiers de verrouillage pour obtenir des builds déterministes. Il veille toujours à ce que vous utilisiez un environnement virtuel, afin d’éviter de perturber les installations globales. Vous pouvez déclarer vos dépendances en ligne de commande ou en modifiant votre fichier pyproject.toml. Poetry facilite la spécification de contraintes de version, ce qui est très utile pour éviter les versions présentant des vulnérabilités de sécurité connues. Au moment de la rédaction de cet article, Poetry est activement maintenu. Sa dernière version date de février 2020, et une préversion a été publiée en mars 2020.

Pip-tools

Pip-tools est un ensemble d’outils open source qui vous aide à maintenir à jour vos packages basés sur pip, même lorsqu’ils sont épinglés. (L’épinglage contribue à garantir des builds déterministes.) Pip-tools comprend deux commandes distinctes : `pip-compile` et `pip-sync`. La commande `pip-compile` crée votre fichier `requirements.txt`, et la commande `pip-sync` installe les packages de façon prévisible, conformément à votre fichier `requirements.txt`. Au moment de la rédaction de cet article, Pip-tools est activement maintenu et sa dernière version date de février 2020.

Hatch

Hatch est un outil de productivité open source qui vous aide à gérer vos dépendances et propose également des fonctionnalités de test, entre autres. Il comprend aussi des outils pour interagir avec PyPI, ce qui en fait un excellent choix pour les responsables de projets open source. Au moment de la rédaction de cet article, Hatch semble être activement maintenu. Sa dernière version date d’octobre 2019. Certaines autres options de cette liste ont été mises à jour plus récemment, mais Hatch reste probablement un choix sûr du point de vue de la maintenance.

Comment savoir si les projets que j’utilise présentent des vulnérabilités de sécurité ?

Les outils présentés dans la section précédente vous aident à vous assurer que vos dépendances sont installées, à jour et isolées des autres versions que vous avez pu installer pour d’autres projets. Ils contribuent à garantir des builds stables et prévisibles dans tous vos environnements.

Lorsque vous examinez vos dépendances, les éléments évoqués plus haut sont très importants, mais ce ne sont pas les seuls à prendre en compte. Vous devez également connaître les éventuelles vulnérabilités de sécurité présentes dans vos dépendances et les corriger. Pipenv propose certaines fonctionnalités liées aux vulnérabilités de sécurité connues. Quel que soit l’outil de gestion des dépendances que vous choisissez, Snyk peut vous aider à détecter et corriger les vulnérabilités dans les dépendances de votre projet Python. Vous pouvez même ouvrir directement une pull request de correction depuis notre tableau de bord. Mieux encore, Snyk est gratuit pour les projets open source et publics. Notre offre gratuite comprend 200 analyses par mois pour les dépôts privés. Il n’a jamais été aussi simple d’utiliser l’open source tout en restant protégé.

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.

Lire la suite

AI Background min crop
Blog

L’IA fait surgir tous les risques que vous avez acceptés : sept enseignements du panel de sécurité de l’IA sans filtre

L’IA rend les attaques moins coûteuses et plus rapides, exposant des risques déjà présents dans les organisations. Quatre responsables de la sécurité expliquent pourquoi une défense à la vitesse des machines et une remédiation accélérée sont désormais indispensables.

blog feature ai violet
Blog

VulnBump : les agents IA peuvent-ils corriger les dépendances vulnérables sans casser la build ?

VulnBump évalue des agents IA sur 307 mises à niveau réelles de dépendances. Une correction n’est validée que si la vulnérabilité disparaît et que la build et les tests restent au vert.

blog feature snyk container custom base recommendations
Blog

Découvrez Evo Agentic AppSec : une sécurité au rythme du développement de l’IA

Le développement piloté par l’IA dépasse les capacités des processus de sécurité traditionnels. Agentic AppSec de Snyk s’appuie sur des agents de sécurité pour détecter, corriger et vérifier les vulnérabilités en continu, tandis que les équipes définissent les exigences.