Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry

Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry

Überblick

Es war, als ich gebeten wurde, die Umgebung eines bestimmten Entwicklungsstandorts zu untersuchen. Das Verfahren zum Erstellen der ** Umgebung wird mündlich angegeben **, und Anaconda wird unter Windows installiert, und zusätzliche Pakete werden mit pip installiert. Natürlich ist ** keine Version angegeben **, daher wird die aktuellste Version zu diesem Zeitpunkt enthalten sein, sodass sich die Nebenversion je nach Eingabezeitpunkt unterscheidet. In einem großen Team, das sich über Unternehmen erstreckt, ist es möglich, dass Unternehmen A funktioniert, Unternehmen B jedoch nicht. ** Da die Einführung von Lint und Formatierer ebenfalls optional ist **, existieren das Festschreibungsprotokoll von git ** der hinzugefügten und geänderten Teile und der Unterschied des formatierten Teils nebeneinander **, und die Überprüfung der Quelle dauert einige Zeit.

Möchten Sie die Python-Betriebsumgebung für alle Mitglieder des Entwicklungsteams vereinheitlichen? Möchten Sie eine saubere Quelle erstellen, die gemäß den Coderegeln einfach zu warten ist?

Beginnen wir die Arbeitsstilreform der Ingenieure mit ** Poetry **!

Tor

  1. Sie werden verstehen, wie Sie die Umgebung mithilfe von Poetry codieren und an Teammitglieder verteilen.
  2. Holen Sie sich eine Projektvorlage und starten Sie reibungslos in die Entwicklung.

Wir werden das oben Gesagte anstreben. Übrigens, hier sind die Hauptprobleme der in der Übersicht genannten Entwicklungsstelle.

Problem Was ist los Wird es mit Poesie gelöst?
Bauverfahren für die mündliche Umgebung(Oder txt) Verursacht menschliches Versagen wie Auslassen Reproduzierbarkeit, da das Umgebungsinstallationsprogramm abgeschlossen ist ◎
Pip-Installation in einer Anaconda-Umgebung Im schlimmsten Fall muss die Anaconda-Umgebung neu installiert werden. Mach dir keine Sorgen, weil du Anaconda nicht verwendest
Keine Version angegeben Es funktioniert nicht je nach Person ... Die Version kann mit einem Befehl vereinheitlicht werden
Flusen und Formatierer sind optional Schwer zu lesender Code ist schwer zu pflegen Die Installation des Tools kann obligatorisch sein.
Die automatische Ausführung muss mit vscode und git kombiniert werden.

Verfahren

1. Installation von Gedichten

Wir werden Poesie unter der Python-Umgebung installieren. Es handelt sich um eine einmalige Installation mit dem folgenden Befehl. Operationen wie Docker müssen nicht erlernt werden.

$pip install poetry

2. Erstellen Sie eine Projektvorlage

Sobald Poetry installiert ist, erstellen wir eine Projektvorlage.

$ poetry new xxx

Der Teil, der xxx entspricht, ist der Projektname. Dies ist der Teil von * pip install xxx *, der xxx entspricht. Ein Quell- / Testverzeichnis und eine Readme-Datei pyproject.toml werden erstellt. Danach drücken Sie zum Git-Repository und die anfängliche Einstellung ist abgeschlossen.

Wenn Sie es ausführen, sieht es so aus
ezgif.com-gif-maker.gif

3. Abhängige Bibliothekseinstellungen

Bearbeiten Sie die Datei ** pyproject.toml **, um die für Ihr Projekt erforderlichen abhängigen Bibliotheken zu konfigurieren. pyproject.tomlはパッケージビルドに必要なデータを定義するファイルのフォーマットで、setup.py/cfgを置き換えてsetuptoolsではないビルドツールでもビルドが可能となることを目的として作られたものです。

#Abhängige Bibliothek hinzufügen
$ poetry add xxx
#Entwicklungsbibliothek hinzugefügt
$ poetry add -D xxx

Lauf!

Es kann auf die gleiche Weise wie die Pip-Installation ausgeführt werden. Wenn Sie die Version angeben möchten, verwenden Sie den Operator ==.

$ 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

Ausführungsergebnis

Wenn Sie den Befehl add ausführen, wird er der Datei pyproject.toml hinzugefügt. Sie können pyproject.toml auch direkt bearbeiten.

[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. Erstellen Sie eine Ausführungsumgebung

Wir werden eine virtuelle Umgebung (venv) erstellen, in der die Umgebung gemäß den in der Datei pyproject.toml beschriebenen Bedingungen installiert wird.

Ändern Sie den Speicherort, an dem venv erstellt wird

Standardmäßig wird venv im Home-Verzeichnis erstellt. Es wäre jedoch hilfreich, wenn es direkt unter dem Projekt erstellt werden könnte, z. B. wenn Sie es mit vscode verwenden. Ändern Sie daher die Einstellung.

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

Umgebung installieren

Die Installation ist auch ein einzelner Befehl. Sie haben ein .venv-Verzeichnis und eine poetry.lock-Datei.

$ poetry install
Wenn Sie es ausführen, sieht es so aus
ezgif.com-gif-maker (1).gif

Die Datei poetry.lock ist eine Datei, die vollständige Abhängigkeiten garantiert. Selbst wenn Sie in der Datei pyproject.toml keine expliziten Versionen angegeben haben, zeichnet die Sperrdatei die Versionsinformationen von Abhängigkeiten auf, die in der Vergangenheit erfolgreich installiert wurden, sodass jeder sie jederzeit reproduzieren kann. Mit anderen Worten, wenn Sie diese Datei an Teammitglieder verteilen und Gedichte installieren, haben Sie immer eine einzigartige Umgebung.

5. Führen Sie Python in der von Ihnen erstellten Umgebung aus

Wir werden auf die zuletzt erstellte virtuelle Umgebung zugreifen. Sie können auf die Befehle in der virtuellen Umgebung mit dem Befehl poetry run zugreifen.

#An Python anhängen
$ poetry run python -V
Python 3.8.5
#Testlauf
$ 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 ========================================================

Tatsächlich verwendbare Projektvorlage

Es ist lange her, aber das ist alles für die Poesie. Ich hoffe, Sie verstehen, dass Sie die Umgebung mit nur wenigen Befehlen codieren, mit Git verwalten und alle Projektmitglieder in derselben Umgebung entwickeln können.

Wir haben eine Projektvorlage erstellt, die Sie tatsächlich verwenden können. Verwenden Sie sie daher bitte. https://github.com/TomokiHirose/poetry_template

Vorlagenübersicht

Ich erstelle eine Projektvorlage mit den folgenden Funktionen. Schreiben Sie die Vorlage neu und verwenden Sie den Befehl poet update, um die Umgebung entsprechend dem Benutzer neu zu schreiben.

Befehl Inhalt
poetry run pytest ./Führen Sie die Tests mit der zu testenden Datei aus
poetry run format black(Leistungsstarker Formatierer)Und isort(Importauftrag ausrichten)Läuft
poetry run lint flake8(linter)Und mypy(Statische Typprüfung)Läuft
poetry run metrics Führen Sie eine statische Analyse des zirkulären Komplexitätsindex, des Wartungsverfügbarkeitsindex, des LOC usw. durch.
poetry run apidoc Generieren Sie API-Dokumentation mit Sphinx
poetry run testdoc Generieren Sie Testdokumentation mit Sphinx[^1]
poetry build ./Radfeile unter dist(Python-Installationsprogramm)Generieren

abschließend

Ich habe vergessen, es zu installieren! Selbst in diesem Fall drücken Sie anstelle von "Bitte xx installieren" einfach den Fix auf git und alle Mitglieder drücken den Update-Befehl, und alle befinden sich sofort in derselben Umgebung! Findest du es nicht sehr modern?

Darüber hinaus wird in Zusammenarbeit mit vscode das Format erzwungen, wenn Schwarz und flake8 unter .venv zum Zeitpunkt des Speicherns automatisch ausgeführt werden oder wenn Schwarz vor dem Push durch Verknüpfen mit dem Commit-Hook von git ausgeführt wird. tun können. Ich finde es nicht großartig, PEP8 [^ 2] zu folgen, aber wenn Sie ** jemanden zwingen, denselben Code zu schreiben **, ist es ähnlich, auch wenn Fortgeschrittene und Neulinge im selben Projekt sind. Es wird empfohlen, da die Wartung einfacher ist, da der Code auf diese Weise vervollständigt wird.


[^ 1]: Ein Dokument, in dem die im Test zu bestätigenden Punkte und der verantwortliche Tester aufgezeichnet sind. [^ 2]: PEP8 ist ein Python-Codierungsstandard. Es ist nicht immer notwendig, dies zu befolgen, aber es gibt einen Unterschied in der Wartungsfreundlichkeit, je nachdem, ob es einen Standard gibt oder nicht.

Recommended Posts

Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Holen Sie sich mit Poetry eine schnelle Python-Entwicklungsumgebung
Verwalten Sie Python-Laufzeitpakete und Entwicklungsumgebungspakete mit Poetry
Holen Sie sich eine saubere Python-Entwicklungsumgebung mit pyenv + pipx + Poetry
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Überprüfen der NAOqi Python-Entwicklungsumgebung
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
[Entwicklungsumgebung] Python mit Xcode [Mit Bildschirmübergang]
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
Die stärkste Python-Entwicklungsumgebung PyCharms Empfehlung
Erstellen einer Python-Entwicklungsumgebung für Windows + gVim + Poetry
Die stärkste in Python integrierte Entwicklungsumgebung PyCharm
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
2016 Todai Mathematik mit Python gelöst
Erstellen Sie eine Python-Entwicklungsumgebung mit Visual Studio Code
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Instanziierung der zuvor erstellten BOX-Entwicklungsumgebung
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Bildverarbeitung? Die Geschichte, Python für zu starten
Poetry-Virtualenv-Umgebungskonstruktion mit Centos-Sclo-Rh-Python ~ Hinweise
Python-Entwicklungsumgebung - Verwendung von Pyenv und Virtualenv-
Konvertieren Sie den Zeichencode der Datei mit Python3
Fortsetzung der Multi-Plattform-Entwicklung mit Electron und Python
[Python] Bestimmen Sie den Typ der Iris mit SVM
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert
Vereinheitlichung der Python-Umgebung
Aufbau einer Python-Entwicklungsumgebung
der Zen von Python
Python ab Windows 7
Informationen zur Python-Entwicklungsumgebung
GRPC beginnend mit Python
Python-Umgebung mit Docker-Compose
python2.7 Konstruktion der Entwicklungsumgebung
Entwicklungsumgebung in Python
Virtuelle Umgebung mit Python 3.6
Virtualisieren (isolieren) Sie die IBM i Python-Entwicklungsumgebung mit chroot
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Lerne Nim mit Python (ab Anfang des Jahres).
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Python-Entwicklungsumgebung mit Windows + Anaconda3 + Visual Studio Code
Aufbau der Python-Entwicklungsumgebung 2020 [Von der Python-Installation bis zur Einführung in die Poesie]
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Aufbau einer QGIS3 Python-Plug-In-Entwicklungsumgebung mit VSCode (macOS)
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Python-Entwicklungsumgebung mit Windows + Python + PipEnv + Visual Studio-Code
Installieren Sie Ubuntu 20.04 mit GUI und bereiten Sie die Entwicklungsumgebung vor
Holen Sie sich mit Python den Betriebsstatus von JR West
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm