Python-Projekte mit Poetry und VSCode Teil 2 - Python Spickzettel

Im ersten Artikel haben wir gelernt, was die Datei pyproject.toml ist und wie man damit arbeitet, Poetry verwendet, um ein neues Projekt zu starten, eine virtuelle Umgebung zu erstellen und Abhängigkeiten hinzuzufügen und zu entfernen. All dies mit den folgenden Befehlen:
| Befehl | Beschreibung |
|---|---|
poetry new [package-name] | Startet ein neues Python-Projekt. |
poetry init | Erstellt interaktiv eine pyproject.toml-Datei. |
poetry install | Installiert die Pakete in der pyproject.toml-Datei. |
poetry add [package-name] | Fügt ein Paket zu einer virtuellen Umgebung hinzu. |
poetry add -D [package-name] | Fügt ein Entwicklungs-Paket zu einer virtuellen Umgebung hinzu. |
poetry remove [package-name] | Entfernt ein Paket aus einer virtuellen Umgebung. |
poetry remove -D [package-name] | Entfernt ein Entwicklungs-Paket aus einer virtuellen Umgebung. |
In diesem zweiten Teil werden wir:
- Unsere virtuelle Umgebung zu VSCode hinzufügen.
- Unsere Abhängigkeiten aktualisieren.
- Unsere Entwicklungsabhängigkeiten mit dem Editor integrieren:
- Flake8
- Black
- Pytest
Und in einem dritten Artikel werden wir eine Beispielbibliothek schreiben, unser Projekt mit Poetry erstellen und es auf PyPI veröffentlichen.
Bevor wir beginnen, stellen Sie sicher, dass Sie VSCode installiert haben, die Python-Erweiterung hinzugefügt haben und den Anweisungen des ersten Artikels dieser Serie gefolgt sind und diese verstanden haben.
Poetry unter VSCode einrichten
Einige Tage sind seit dem ersten Teil vergangen, daher kann es eine gute Idee sein, nach neuen Versionen unserer Abhängigkeiten zu suchen. Öffnen Sie Ihr Terminal, navigieren Sie in Ihr Projektverzeichnis und geben Sie den Befehl poetry update ein:

Bisher sind keine neuen Versionen verfügbar.
Wenn Sie eine virtuelle Umgebung mit dem venv-Befehl erstellen, wird VSCode diese automatisch als Standard-Python-Umgebung für dieses Projekt festlegen. Wenn Sie mit Poetry arbeiten, müssen wir beim ersten Mal im Terminal und im Projektordner Folgendes eingeben:
poetry shell
code .
Der erste Befehl, poetry shell, versetzt uns in unsere virtuelle Umgebung, und code . öffnet den aktuellen Ordner in VSCode.

Öffnen Sie den Ordner how-long (oder den mit Ihrem Projektnamen) über die linke Leiste und erstellen Sie neben __init__.py eine Datei namens how-long.py. Unten links sehen Sie die aktuelle Python-Umgebung:

Klicken Sie darauf, und eine Liste der verfügbaren Umgebungen wird angezeigt. Wählen Sie diejenige aus, die den Namen Ihres Projekts enthält:

Nun integrieren wir unsere Entwicklungsabhängigkeiten, Flake8, Black und Pytest, in Visual Studio Code.
Flake8
Flake8 stattet unsere Projekte mit Linting-Funktionen aus. Mit anderen Worten, es warnt vor Syntax- und Stilfehlern, und dank VSCode wissen wir davon, während wir tippen.
Standardmäßig wird die Python-Erweiterung mit Pylint aktiviert, was leistungsstark, aber komplex zu konfigurieren ist. Um auf Flake8 umzuschalten, nehmen Sie eine Änderung an einer beliebigen Python-Datei vor und speichern Sie sie. Unten rechts wird eine Popup-Meldung angezeigt:

Klicken Sie auf Select Linter und wählen Sie Flake8 aus der Liste. Nun teilt uns VSCode unsere Syntax- und Stilprobleme mit, in Grün oder Rot je nach Schweregrad, immer mit einer schönen Beschreibung dessen, was falsch ist:

Es scheint, dass wir zwei Probleme haben: Uns fehlt eine Leerzeile am Ende unserer Datei (Stil) und wir haben vergessen, Anführungszeichen zu unserem Hello, World!-String hinzuzufügen (Syntax). Beheben Sie diese und beobachten Sie, wie alle Warnungen verschwinden.
Black
Black ist ein Code-Formatierer, ein Werkzeug, das unseren Code überprüft und ihn automatisch gemäß dem PEP 8-Styleguide formatiert, demselben PEP, den Flake8 verwendet, um unsere Stilfehler zu überprüfen.
Halten Sie shift + cmd/ctrl + p gedrückt, um die Befehlspalette zu öffnen, geben Sie Format Document ein und drücken Sie Enter. Eine neue Popup-Meldung wird angezeigt:

Wählen Sie Use Black. Kopieren Sie nun diesen schlecht formatierten Code in Ihre Python-Datei:
for i in range(5): # this comment has too many spaces
print(i) # this line has 6 space indentation.
Was für ein hässliches Stück S***… Code. Versuchen Sie erneut, ihn zu formatieren, und sehen Sie, wie Black alle Fehler für Sie behebt!
Eine weitere Möglichkeit besteht darin, VSCode so zu konfigurieren, dass Black unseren Code jedes Mal automatisch formatiert, wenn wir speichern. Halten Sie cmd/ctrl + , gedrückt, um die Einstellungen zu öffnen. Stellen Sie sicher, dass Sie sich in den Workspace Settings befinden, suchen Sie nach Format On Save und aktivieren Sie das Kontrollkästchen:

Schließlich verwendet Black standardmäßig 88 Zeichen pro Zeile, im Gegensatz zu den 80, die von Flake8 erlaubt sind. Um Konflikte zu vermeiden, öffnen Sie den Ordner .vscode und fügen Sie am Ende der Datei settings.json Folgendes hinzu:
{
...
"python.linting.flake8Args": [
"--max-line-length=88"
],
}

Pytest
Wenn Sie es ernst mit der Programmierung meinen, ist es entscheidend, dass Sie lernen, wie Sie Ihre Projekte testen. Es ist eine unglaublich nützliche Fähigkeit, die es Ihnen ermöglicht, Programme mit Zuversicht zu schreiben und auszuliefern, indem die Möglichkeit katastrophaler Fehler nach der Auslieferung reduziert wird.
Pytest ist ein sehr beliebtes und benutzerfreundliches Framework zum Schreiben von Tests. Wir haben es bereits installiert, also werden wir es auch mit VSCode integrieren.
Öffnen Sie den Ordner tests und wählen Sie die Datei test_how_long.py. Poetry liefert uns bereits unseren ersten Test:
# test_how_long.py
from how_long import __version__
def test_version():
assert __version__ == '0.1.0'
In diesem Test importieren wir die Variable __version__ aus der Datei __init__.py, die sich im Ordner how_long befindet, und stellen sicher, dass die aktuelle Version 0.1.0 ist. Öffnen Sie das integrierte Terminal, indem Sie zu Terminal > New Terminal gehen, und geben Sie ein:
pytest
Die Ausgabe wird wie folgt aussehen:

Ok, alles ist in Ordnung. Öffnen Sie Ihre Befehlspalette mit shift + cmd/ctrl + p:
- Schreiben Sie unit und wählen Sie Python: Configure Unit Tests.
- Wählen Sie pytest.
- Wählen Sie das Verzeichnis aus, in dem Sie die Tests gespeichert haben, in unserem Fall tests.
Drei Dinge sind passiert:
Eine neue Schaltfläche ist in der Statusleiste erschienen: Run Tests. Dies entspricht der Eingabe von pytest im Terminal. Drücken Sie darauf und wählen Sie Run All Unit Tests. Nach Abschluss informiert es Sie über die Anzahl der bestandenen und nicht bestandenen Tests:

Ein neues Symbol in der linken Leiste. Wenn Sie darauf klicken, wird ein Fenster angezeigt, das alle Tests auflistet. Hier können Sie jeden einzeln ausführen:

Innerhalb der Testdatei werden vor jeder Testfunktion neue Optionen angezeigt: Ein Häkchensymbol erscheint, wenn es in Ordnung ist, und ein x, wenn nicht. Es ermöglicht Ihnen auch, bestimmte Tests auszuführen:

Fazit
Bisher haben wir:
- Ein neues Projekt gestartet, eine virtuelle Umgebung erstellt und Abhängigkeiten hinzugefügt, gelöscht und aktualisiert.
- Unsere virtuelle Umgebung zu VSCode hinzugefügt, Flake8 konfiguriert, um unseren Code beim Tippen zu linten, Black als Formatierer ausgewählt und Pytest integriert, um unsere Tests visuell auszuführen.
Schließlich werden wir im dritten und letzten Artikel:
- Eine Beispielbibliothek schreiben.
- Unser Projekt mit Poetry erstellen.
- Es auf PyPI veröffentlichen.