Unifier l'environnement de l'équipe de développement Python en commençant par Poetry

Unifier l'environnement de l'équipe de développement Python en commençant par Poetry

Aperçu

C'est quand on m'a demandé de me pencher sur l'environnement d'un certain site de développement. La ** procédure de construction de l'environnement est donnée verbalement **, et Anaconda est installé sur Windows et des packages supplémentaires sont installés avec pip. Bien sûr, ** aucune version n'est spécifiée **, donc la dernière version à ce moment-là sera incluse, donc la version mineure différera en fonction du moment d'entrée. Dans une grande équipe qui chevauche des entreprises, il est possible que la société A fonctionne, mais pas la société B. ** Puisque l'introduction de Lint et du formateur est facultative **, le journal de validation de git ** les parties ajoutées et modifiées et le diff de la partie formatée coexistent **, et la révision des sources prend du temps.

Souhaitez-vous unifier l'environnement d'exploitation Python pour tous les membres de l'équipe de développement? Souhaitez-vous créer une source propre et facile à maintenir selon les règles du code?

Commençons la réforme du style de travail des ingénieurs avec ** Poésie **!

objectif

  1. Vous serez en mesure de comprendre comment coder l'environnement en utilisant Poetry et comment le distribuer aux membres de l'équipe.
  2. Obtenez un modèle de projet et démarrez le développement en douceur.

Nous viserons ce qui précède. En passant, voici les principaux problèmes du site de développement mentionnés dans la vue d'ensemble.

problème Qu'est-ce qui ne va pas Sera-t-il résolu avec la poésie?
Procédure de construction de l'environnement oral(Ou txt) Provoque une erreur humaine telle qu'une omission Reproductibilité car le programme d'installation de l'environnement est terminé ◎
Installation de Pip sur l'environnement Anaconda Dans le pire des cas, il sera nécessaire de réinstaller l'environnement Anaconda. Ne vous inquiétez pas car vous n'utilisez pas Anaconda
Aucune version spécifiée Cela ne fonctionne pas selon la personne ... La version peut être unifiée avec une seule commande
Les peluches et le formateur sont facultatifs Le code difficile à lire est difficile à maintenir Il peut être obligatoire d'installer l'outil.
L'exécution automatique doit être combinée avec vscode et git.

procédure

1. Installation de poésie

Nous installerons la poésie sous l'environnement python. Il s'agit d'une installation unique avec la commande suivante. Il n'est pas nécessaire d'apprendre des opérations comme Docker.

$pip install poetry

2. Créer un modèle de projet

Une fois la poésie installée, nous créerons un modèle de projet.

$ poetry new xxx

La partie correspondant à xxx est le nom du projet. C'est la partie de * pip install xxx * qui correspond à xxx. Vous aurez un répertoire source / test et un fichier Readme, pyproject.toml. Après cela, poussez vers le référentiel git et la configuration initiale est terminée.

Quand vous l'exécutez, ça ressemble à ça
ezgif.com-gif-maker.gif

3. Paramètres de bibliothèque dépendants

Modifiez le fichier ** pyproject.toml ** pour configurer les bibliothèques dépendantes requises par votre projet. pyproject.tomlはパッケージビルドに必要なデータを定義するファイルのフォーマットで、setup.py/cfgを置き換えてsetuptoolsではないビルドツールでもビルドが可能となることを目的として作られたものです。

#Ajouter une bibliothèque dépendante
$ poetry add xxx
#Ajout d'une bibliothèque de développement
$ poetry add -D xxx

Courir!

Il peut être exécuté de la même manière que pip install. Si vous souhaitez spécifier la version, utilisez l'opérateur ==.

$ root@16460604cb93:~/poetry_template# poetry add tensorflow==2.3.0
Creating virtualenv poetry-template-oDQfK0qA-py3.8 in /root/.cache/pypoetry/virtualenvs

Updating dependencies
Resolving dependencies... (48.4s)

Writing lock file

Package operations: 41 installs, 0 updates, 0 removals
$ root@16460604cb93:~/poetry_template# poetry add -D mypy black isort
Using version ^0.790 for mypy
Using version ^20.8b1 for black
Using version ^5.6.4 for isort

Résultat d'exécution

Au fur et à mesure que vous exécutez la commande add, elle sera ajoutée au fichier pyproject.toml. Vous pouvez également modifier directement pyproject.toml.

[tool.poetry]
name = "poetry_template"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]

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

[tool.poetry.dev-dependencies]
pytest = "^5.2"
mypy = "^0.790"
black = "^20.8b1"
isort = "^5.6.4"
flake8 = "^3.8.4"
radon = "^4.3.2"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

4. Créez un environnement d'exécution

Nous allons créer un environnement virtuel (venv) dans lequel l'environnement selon les conditions décrites dans le fichier pyproject.toml est installé.

Changer l'emplacement de création de venv

Par défaut, venv est créé dans le répertoire personnel, mais ce serait bien s'il pouvait être créé directement sous le projet, comme lors de son utilisation avec vscode, alors changez le paramètre.

$ poetry config virtualenvs.in-project true
$ poetry config --list

Installer l'environnement

L'installation est également une commande unique. Vous aurez un répertoire .venv et un fichier poetry.lock.

$ poetry install
Quand vous l'exécutez, ça ressemble à ça
ezgif.com-gif-maker (1).gif

Le fichier poetry.lock est un fichier qui garantit des dépendances complètes. Même si vous n'avez pas spécifié de versions explicites dans le fichier pyproject.toml, le fichier de verrouillage enregistre les informations de version des dépendances qui ont été installées avec succès dans le passé afin que n'importe qui puisse les reproduire à tout moment. En d'autres termes, si vous ** distribuez ce fichier aux membres de l'équipe ** et faites installer ** poetry **, vous disposerez toujours d'un environnement unique.

5. Exécutez Python dans l'environnement que vous avez créé

Nous accéderons à l'environnement virtuel créé en dernier. Vous pouvez accéder aux commandes dans l'environnement virtuel avec la commande poetry run.

#Attacher à python
$ poetry run python -V
Python 3.8.5
#Essai
$ poetry run pytest
======================================================= test session starts =======================================================
platform linux -- Python 3.8.5, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
rootdir: /root/poetry_template
collected 1 item

tests/test_poetry_template.py .                                                                                             [100%]

======================================================== 1 passed in 0.01s ========================================================

Modèle de projet réellement utilisable

Cela fait longtemps, mais c'est tout pour la poésie. J'espère que vous comprenez que vous pouvez coder l'environnement avec seulement quelques commandes, le gérer avec Git et que tous les membres du projet peuvent développer dans le même environnement.

Nous avons créé un modèle de projet que vous pouvez réellement utiliser, veuillez donc l'utiliser. https://github.com/TomokiHirose/poetry_template

Présentation du modèle

Je crée un modèle de projet avec les fonctions suivantes. Réécrivez le modèle et utilisez la commande de mise à jour de poésie pour réécrire l'environnement en fonction de l'utilisateur.

commander Contenu
poetry run pytest ./Exécutez les tests en utilisant le fichier sous tests
poetry run format black(Formateur puissant)Et isort(Aligner l'ordre d'importation)Courses
poetry run lint flake8(linter)Et mypy(Vérification du type statique)Courses
poetry run metrics Effectuer une analyse statique de l'indice de complexité circulaire, de l'indice de disponibilité de la maintenance, du LOC, etc.
poetry run apidoc Générer de la documentation sur l'API avec sphinx
poetry run testdoc Générer la documentation de test avec sphinx[^1]
poetry build ./lime de roue sous dist(installateur python)Générer

en conclusion

J'ai oublié de l'installer! Même dans ce cas, au lieu de "Veuillez installer xx", poussez simplement le correctif sur git et tous les membres appuient sur la commande de mise à jour, et tout le monde sera immédiatement dans le même environnement! Ne pensez-vous pas que c'est très moderne?

De plus, si vous créez un lien avec vscode pour exécuter automatiquement black et flake8 sous .venv au moment de l'enregistrement, ou le liez au hook de validation de git et exécutez black avant de pousser, le format sera forcé. peut faire. Je ne pense pas que ce soit génial de suivre PEP8 [^ 2], mais si vous forcez ** quelqu'un à écrire le même code **, c'est similaire même si les avancés et les nouveaux venus sont dans le même projet. Il est recommandé car il sera plus facile à maintenir car le code sera complété ainsi.


[^ 1]: Un document qui enregistre les éléments à confirmer dans le test et le testeur en charge. [^ 2]: PEP8 est un standard de codage Python. Il n'est pas toujours nécessaire de le suivre, mais il y a une différence de facilité d'entretien selon qu'il existe une norme ou non.

Recommended Posts

Unifier l'environnement de l'équipe de développement Python en commençant par Poetry
Préparer l'environnement d'exécution de Python3 avec Docker
Obtenez un environnement de développement Python rapide avec Poetry
Gérez les packages d'exécution Python et les packages d'environnement de développement avec Poetry
Obtenez un environnement de développement Python propre avec pyenv + pipx + Poetry
Comment entrer dans l'environnement de développement Python avec Vagrant
Vérification de l'environnement de développement NAOqi Python
Configurer un environnement de développement Python avec Atom
Préparez l'environnement de développement avec anyenv
[Environnement de développement] Python avec Xcode [Avec transition d'écran]
Vérifier l'existence du fichier avec python
À propos de l'environnement virtuel de Python version 3.7
L'environnement de développement Python le plus puissant Recommandation de PyCharm
Création d'un environnement de développement Python pour Windows + gVim + Poetry
L'environnement de développement intégré Python le plus puissant PyCharm
Remarque: préparez l'environnement de CmdStanPy avec docker
Mathématiques Todai 2016 résolues avec Python
Créer un environnement de développement Python avec Visual Studio Code
[Note] Exportez le html du site avec python.
Calculez le nombre total de combinaisons avec python
Instanciation de l'environnement de développement BOX créé précédemment
[Python] Créer un environnement de développement Django avec Docker
Utiliser plusieurs versions de l'environnement python avec pyenv
Vérifiez la date du devoir de drapeau avec Python
Traitement d'image? L'histoire du démarrage de Python pour
Construction d'environnement Poetry-virtualenv avec python de centos-sclo-rh ~ Notes
environnement de développement python -utilisation de pyenv et virtualenv-
Convertir le code de caractère du fichier avec Python3
Poursuite du développement multi-plateforme avec Electron et Python
[Python] Déterminez le type d'iris avec SVM
J'ai installé Pygame avec Python 3.5.1 dans l'environnement de pyenv sur OS X
Unification de l'environnement Python
Construction de l'environnement de développement Python
le zen de Python
Python à partir de Windows 7
À propos de l'environnement de développement Python
GRPC commençant par Python
environnement python avec docker-compose
Construction de l'environnement de développement python2.7
Environnement de développement en Python
Environnement virtuel avec Python 3.6
Virtualiser (isoler) l'environnement de développement IBM i python avec chroot
Extraire le tableau des fichiers image avec OneDrive et Python
Apprenez Nim avec Python (dès le début de l'année).
Recommandation de construction d'un environnement Python portable avec conda
L'histoire du partage de l'environnement pyenv avec plusieurs utilisateurs
Détruire l'expression intermédiaire de la méthode sweep avec Python
Créez un environnement de développement python avec vagrant + ansible + fabric
Visualisez la gamme d'insertions internes et externes avec python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Environnement de développement Python avec Windows + Anaconda3 + Visual Studio Code
Construction de l'environnement de développement Python 2020 [De l'installation de Python à l'introduction à la poésie]
Préparation de l'environnement d'exécution de PyTorch avec Docker Novembre 2019
Construction de l'environnement de développement de plug-in QGIS3 Python avec VSCode (macOS)
Résumé du flux de base de l'apprentissage automatique avec Python
Environnement de développement Python avec Windows + Python + PipEnv + Visual Studio Code
Installez Ubuntu 20.04 avec GUI et préparez l'environnement de développement
Obtenez l'état de fonctionnement de JR West avec Python
Créez un environnement de développement avec Poetry Django Docker Pycharm