Comment installer Poetry pour gérer les dépendances Python sur Ubuntu 22.04
Introduction
Poetry est un gestionnaire de dépendances pour Python qui est également capable de construire et d'emballer vos projets Python pour la distribution. En tant que gestionnaire de dépendances, il fournit des outils pour maintenir des environnements virtuels cohérents et contenus. De plus, il dispose d'outils pour s'intégrer à des flux de travail utilisant d'autres formes de gestion des dépendances, telles que requirements.txt.
Dans ce tutoriel, vous allez installer Poetry en utilisant le script d'installation officiel, configurer un projet Poetry avec un environnement virtuel, puis ajouter et installer les dépendances de votre projet.
Conditions préalables
- Un serveur Ubuntu 22.04, configuré selon notre guide de configuration initiale pour Ubuntu 22.04, avec un utilisateur non root ayant des privilèges
sudoet un pare-feu activé. - La dernière version de Python 3 installée sur votre machine suivant l'Étape 1 sur comment installer Python 3 et configurer un environnement de programmation sur un serveur Ubuntu 22.04.
Étape 1 — Installation de Poetry
Poetry est installé à l'aide d'un script d'installation officiel fourni sur le site web de Poetry. Cette commande va télécharger le script d'installation, puis exécuter l'installation de Poetry sur votre système. Bien que ce tutoriel soit destiné à un serveur Ubuntu 22.04, ce script d'installation peut être exécuté sur Linux, macOS et Windows avec WSL (Windows Subsystem for Linux) qui peut être installé à travers ce tutoriel. Entrez la commande suivante:
- curl -sSL https://install.python-poetry.org | python3 -
…
[secondary_label Output]
Poetry (1.2.1) is installed now. Great!
To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
environment variable.
Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.
Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
…
Une fois l'installation terminée, Poetry vous demandera d'ajouter son répertoire bin à votre PATH pour permettre l'utilisation de poetry dans votre ligne de commande. Sur Ubuntu avec Bash, cela peut être fait en ouvrant le fichier ~/.bashrc à l'aide de nano ou de votre éditeur de texte préféré :
- nano ~/.bashrc
Ajoutez la ligne suivante à la fin du fichier :
. . .
export PATH="/home/sammy/.local/bin:$PATH"
Enregistrez et quittez le fichier, avec nano cela peut être fait en appuyant sur CTRL+X pour quitter et Y pour enregistrer les modifications.
Ensuite, appliquez les modifications à votre session actuelle :
- source ~/.bashrc
Pour vérifier que la commande poetry est maintenant disponible, entrez ce qui suit pour afficher la version actuelle de Poetry :
- poetry --version
Poetry (version 1.2.1)
Maintenant, vous avez une installation fonctionnelle de Poetry et vous pouvez procéder à la création d'un projet Poetry.
Étape 2 — Mise en place d'un projet de poésie
Commencez par créer un nouveau projet Poetry. Ce projet viendra avec l'environnement virtuel qui sera utilisé lors de l'installation et de la gestion de vos dépendances. Ce tutoriel utilisera le nom de projet sammy_poetry, mais n'hésitez pas à choisir votre nom préféré.
- poetry new sammy_poetry
Ensuite, naviguez dans votre nouveau répertoire de projet :
- cd sammy_poetry
Votre nouveau projet de poésie avec les fichiers de base nécessaires est maintenant créé. Pour voir vos fichiers de projet nouvellement créés, utilisez une commande ls :
- ls
README.md dist pyproject.toml sammy_poetry tests
Remarque : Si vous avez un projet existant que vous souhaitez utiliser, vous pouvez utiliser une commande différente pour faire reconnaître ce projet par Poetry. Naviguez jusqu'au répertoire de votre projet existant, puis saisissez cette commande :
- poetry init
Cela créera tous les fichiers nécessaires dans votre projet existant, et vous pourrez continuer avec ce tutoriel comme s'il s'agissait d'un nouveau projet.
Étape 3 — Ajouter des dépendances
Avant de commencer à ajouter des dépendances à votre projet, vous commencerez par examiner et comprendre le fichier que Poetry utilise pour tenir vos dépendances. Dans le répertoire de votre projet Poetry se trouve un fichier pyproject.toml généré automatiquement qui contient la liste de vos dépendances. Ouvrez-le et inspectez-le avec ce qui suit :
- nano pyproject.toml
[tool.poetry]
name = "sammy-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sammy_poetry"}]
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Avec vos dépendances qui sont listées sous tool.poetry.dependencies, il y a également des métadonnées sous tool.poetry. N'hésitez pas à personnaliser ces métadonnées avec vos propres informations telles que le nom, l'email et la description du projet. Le bloc build-system contient actuellement des spécifications sur la manière dont Poetry construira vos packages et peut être laissé intact pour le moment.
Une chose à noter est que Python 3.10, bien que ce soit la version la plus récente, peut être exigeant en ressources et peut poser problème en fonction du système. La plupart des bibliothèques Python nécessitent uniquement la version 3.8 au minimum. Si vous souhaitez changer la version de Python utilisée comme dépendance dans votre projet, la définition des dépendances de version sera abordée dans Étape 4 de ce tutoriel.
Dans son état actuel, votre projet n'a pas de dépendances autres que Python lui-même. Poetry peut ajouter de nouvelles dépendances à votre projet directement à partir de la ligne de commande. En utilisant la commande poetry add, Poetry ajoutera à la fois une ligne de dépendance à votre bloc tool.poetry.dependencies et installera la dépendance en même temps.
Après avoir inspecté votre fichier pyproject.toml, quittez votre éditeur. Par exemple, vous allez ajouter la bibliothèque HTTP populaire pour Python, requests, aux dépendances de votre projet tout en l'installant à l'aide de la commande add. Cette bibliothèque vous permet d'envoyer des requêtes HTTP avec un minimum de code standard et est utile pour les applications qui communiquent via HTTP, bien que n'importe quel package suffise pour les besoins de cette démonstration. Entrez la commande suivante :
- poetry add requests
Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs
Using version ^2.28.1 for requests
Updating dependencies
Resolving dependencies... (0.3s)
Writing lock file
Package operations: 5 installs, 0 updates, 0 removals
• Installing certifi (2022.9.24)
• Installing charset-normalizer (2.1.1)
• Installing idna (3.4)
• Installing urllib3 (1.26.12)
• Installing requests (2.28.1)
En plus d'ajouter à votre fichier pyproject.toml et d'installer requests, la commande add gère également l'initialisation d'un environnement virtuel. De plus, requests a ses propres dépendances. Poetry installe automatiquement toutes ces dépendances avant d'installer requests lui-même.
Votre fichier pyproject.toml sera mis à jour avec ce qui suit :
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1"
. . .
Cela garantit que requests est toujours installé. Le ^ signifie que ce serait la version minimale acceptable à installer et que des versions supérieures seraient également acceptables.
Étape 4 — Suppression et fixation des dépendances
Afin de maintenir la cohérence entre vos dépendances actuellement installées et celles que vous avez listées dans votre fichier pyproject.toml, Poetry utilise un fichier de verrouillage. Poetry lit directement à partir de ce fichier pendant le processus d'installation, ce qui signifie que modifier directement votre fichier pyproject.toml pour changer vos dépendances peut entraîner des erreurs ou des avertissements tels que celui-ci :
. . .
Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it.
. . .
Ainsi, si vous devez supprimer une dépendance ou modifier sa version, vous devriez utiliser la commande poetry remove. Bien qu'il soit possible de modifier manuellement le fichier pyproject.toml, vous devrez tenir compte du lock file et activer manuellement votre environnement virtuel. Donc, dans le scénario où vous voulez changer la version de requests, supprimez-la d'abord avec cette commande:
- poetry remove requests
Updating dependencies
Resolving dependencies... (0.1s)
Writing lock file
Package operations: 0 installs, 0 updates, 5 removals
• Removing certifi (2022.9.24)
• Removing charset-normalizer (2.1.1)
• Removing idna (3.4)
• Removing requests (2.28.1)
• Removing urllib3 (1.26.12)
Maintenant que requests a été supprimé, vous pouvez l'ajouter à nouveau en tant que dépendance fixée. Avec les dépendances, vous souhaitez souvent garder une bibliothèque à une version spécifique pour votre projet. Cela est souvent dû à des problèmes de compatibilité à mesure que les bibliothèques évoluent avec le temps, et cela peut être bénéfique pour maintenir la cohérence de votre projet. Cela s'appelle fixer les dépendances.
Par exemple, vous allez fixer requests à une version autre que la dernière, qui est celle par défaut lors de l'exécution de la commande add. Au lieu de cela, vous allez le fixer à 2.26.0, qui est une version antérieure valide comme le montre l'historique PyPI de requests :
- poetry add requests@2.26.0
Updating dependencies
Resolving dependencies... (0.3s)
Writing lock file
Package operations: 5 installs, 0 updates, 0 removals
• Installing certifi (2022.9.24)
• Installing charset-normalizer (2.0.12)
• Installing idna (3.4)
• Installing urllib3 (1.26.12)
• Installing requests (2.26.0)
Maintenant, dans votre fichier pyproject.toml, vous trouverez :
. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "2.26.0"
. . .
Cela spécifie que requests sera toujours installé spécifiquement en tant que version 2.26.0.
Conclusion
Dans ce tutoriel, vous avez installé Poetry et créé un projet Poetry, soit à partir de zéro, soit dans un projet existant. Vous avez également ajouté des dépendances, puis installé ces dépendances dans un environnement virtuel. De plus, vous avez supprimé une dépendance avant de l'ajouter en tant que dépendance verrouillée dans votre projet. Ensuite, vous pouvez explorer d'autres fonctionnalités de Poetry, avec ce tutoriel sur comment publier des paquets Python sur PyPI en utilisant Poetry sur Ubuntu 22.04.