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.
OS:macOS Catalina v10.15.4 poetry:v1.0.8
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
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.
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».
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
Supprimez la bibliothèque de pyproject.toml
ainsi que de l'environnement virtuel.
poetry remove <nom du paquet>
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
#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
pyproject.toml
Utilisé lorsque vous souhaitez installer des packages à partir de pyproject.toml
créés par d'autres à la fois
poetry install
poetry self: update
qui apparaît parfois lorsque vous recherchez est comme la commande de la poésie avant la v1.0, veuillez donc utiliser la commande suivante maintenant.
poetry self update
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
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
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