[Dernière version 2020/06] Utilisation basique de la poésie, un outil de gestion des dépendances pour python

introduction

Voici un usage très basique de la poésie à partir de 2020/06. Pour connaître la différence entre la poésie et les autres outils de dépendance et comment les utiliser plus en détail, veuillez vous référer aux articles et documents officiels rédigés par d'autres.

Environnement de vérification de fonctionnement

OS:macOS Catalina v10.15.4 poetry:v1.0.8

installation de poésie

Installation

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

Réglage initial

Si vous tapez la commande suivante, l'environnement virtuel (dossier .venv) créé par poetry sera créé directement sous le projet qui gère les paquets utilisant la poésie.


poetry config virtualenvs.in-project true

La raison pour laquelle cela est nécessaire est que lors de l'utilisation de vscode, si ce paramètre n'est pas défini, il est nécessaire d'ajouter le chemin de l'environnement virtuel à vscode settings.json et de prendre des mesures pour que vscode reconnaisse l'environnement virtuel. Cependant, si vous définissez d'abord ce paramètre, vous pouvez éviter le problème.

Introduire la poésie dans le projet

introduction

Si vous tapez la commande suivante, pyproject.toml qui gère la liste de paquets sera créé directement en dessous.


poetry init

On vous demandera de manière interactive le nom de certains projets, l'auteur, etc., veuillez donc répondre en conséquence. Pour le moment, vous pouvez appuyer sur Entrée à plusieurs reprises. Lorsque vous démarrez le projet, vous pouvez utiliser poetry new, mais cette commande créera un répertoire et même README. Je pense que vous voulez souvent créer la structure de répertoires vous-même, afin que vous puissiez y utiliser «poésie».

Ajouter un package

Installez dans l'environnement virtuel tout en écrivant les informations de la bibliothèque à utiliser dans pyproject.toml créé par poetry init.

#Si vous n'avez besoin que du dernier pour le moment
poetry add <nom du paquet>

#La version peut être spécifiée
poetry add "pendulum>=2.0.5"

#Obtenez-le de git
poetry add git+https://github.com/sdispater/pendulum.git

Supprimer le package

Supprimez la bibliothèque de pyproject.toml ainsi que de l'environnement virtuel.

poetry remove <nom du paquet>

Exécuter des commandes à l'aide d'un environnement virtuel


poetry run <commander>
#Par exemple, lorsque vous souhaitez démarrer jupyterlab que vous mettez dans la poésie avec le package que vous avez mis en utilisant la poésie activée.
poetry run jupyter lab

Mise à jour du package

#Lors de la mise à jour de certains packages uniquement
poetry update <nom du paquet>

#Lors de la mise à jour de tous les packages
poetry update

Lors de l'installation du package décrit dans pyproject.toml

Utilisé lorsque vous souhaitez installer des packages à partir de pyproject.toml créés par d'autres à la fois

poetry install

Mise à jour de la poésie elle-même


poetry self update

point important

Spécifier le nom du package

Si le nom du package spécifié dans poetry init est le même que le nom du package que vous souhaitez installer avec poetry add, l'erreur suivante peut se produire.

pyproject.toml


[tool.poetry]
name = "kedro"


❯ poetry add kedro
Using version ^0.16.1 for kedro

Updating dependencies
Resolving dependencies... (0.0s)

[AssertionError]

Dans ce cas, changez-le en quelque chose d'autre, tel que name =" kedro_practice ", et vous pourrez installer normalement. Numéro de référence: https://github.com/python-poetry/poetry/issues/1295

Spécifier la version python

Si vous ne faites pas de réglages spéciaux lors de l'exécution de poetry init, la version de python attendue par la poésie sera décrite dans pyproject.toml comme suit.


[tool.poetry.dependencies]
python = "^3.8"

Ce que signifie ^ 3,8 est ** 3,8 <= version python <4,0 **. Il s'agit d'une spécification de version qui suppose la version maximale où la valeur numérique représentant la version majeure la plus à gauche ne change pas. (Voir Documentation officielle pour plus d'informations.) Lors de l'installation d'un paquet avec poetry add etc., poetry juge si le paquet d'installation peut être utilisé avec la version python définie dans pyproject.toml, mais ** du python à juger La version sera toutes les versions possibles. ** En d'autres termes, dans l'exemple ci-dessus, toutes les versions qui satisfont à "3.8 <= python version <4.0", c'est-à-dire ** v3.8 et v3.9 seront jugées. ** ** Par exemple, le package kedro prend en charge «3.6», «3.7», «3.8» et ne prend pas en charge «3.9» à partir du 07/06/2020.

Si vous essayez de ajouter de la poésie ces paquets avec python =" ^ 3.8 "ʻdans le champ [tool.poetry.dependencies] de pyproject.toml`, vous obtiendrez l'erreur suivante: ..


[SolverProblemError]
The current project's Python requirement (^3.8) is not compatible with some of the required packages Python requirement:
  - kedro requires Python >=3.6, <3.9

Because no versions of kedro match >0.16.1,<0.17.0
 and kedro (0.16.1) requires Python >=3.6, <3.9, kedro is forbidden.
So, because kedro-test depends on kedro (^0.16.1), version solving failed.

Vous êtes en version 3.8! Pourquoi pas? !! Vous finirez par tuer le temps.

Comme solution, vous devez écrire pyproject.toml comme suit afin que la version de python soit uniquement v3.8.

[tool.poetry.dependencies]
python = "^3.8,<3.9"
#Ou
python = "=3.8"

Pour plus d'informations, suivez le numéro sur le github de la poésie. https://github.com/python-poetry/poetry/issues/1413 https://github.com/python-poetry/poetry/issues/2444

à la fin

Ce n'est pas mentionné dans cet article, mais il est bon de l'utiliser en combinaison avec pyenv. C'est beaucoup plus confortable que pip, alors essayez-le.

Recommended Posts

[Dernière version 2020/06] Utilisation basique de la poésie, un outil de gestion des dépendances pour python
Utilisation basique de la f-string Python
[Introduction à Python] Utilisation de base des expressions lambda
Utilisation basique de flask-classy
Utilisation de base de Jinja2
Utilisation des locaux Python ()
Connaissance de base de Python
[Introduction à Python] Utilisation basique de la bibliothèque matplotlib
[Python] Utilisation correcte de la carte
Mettez la dernière version de Python dans Linux (Debian) du Chromebook
Utilisation super basique de pytest
Utilisation de base de l'interface graphique PySimple
Mise à niveau de python Anaconda
Vérifiez la version OpenSSL de python 2.6
Résumé de l'utilisation de base de Pandas
Exemple d'utilisation de pickle Python
[Python] Utilisation correcte de la jointure
Mémorandum de l'outil de gestion de paquets Python ez_setup
[Python] Modèle de base et utilisation de l'instruction if (opérateur de comparaison et opérateur booléen)
pyenv-changer la version python de virtualenv
Version Ideone> Python: 3.5 (au 29 août 2017)
Résumé personnel de l'outil de gestion de packages Python
Grammaire de base du système Python3 (dictionnaire)
[python] Utilisation correcte de l'instruction if
Etude de base d'OpenCV avec Python
À propos de l'environnement virtuel de Python version 3.7
Installation de l'outil de gestion des packages Python pip (Windows)
Utilisation de base de Btrfs dans Arch Linux
[Python] Essayez pydash de la version Python de lodash
Grammaire de base de la série Python3 (liste, tapple)
Utilisation d'opérateurs non logiques de ou en python
Cours de base Python (à la fin de 15)
Grammaire de base du système Python3 (notation incluse)