Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hello World

Lass uns mal anfangen, in diesem Projekt zu arbeiten.

Eine super Idee wäre es, wenn unser Projekt "Hello World" in der Konsole ausgeben könnte. Das hört sich doch mega spannend an, oder nicht?

Ein paar Hürden gibt es aber jetzt schon. Zum Beispiel, wo fangen wir zur Hölle nur an?

Wir könnten in der src/poetry_demo/__init__.py unser Code reinschreiben, aber dies ist eigentlich nicht, wie es poetry vorgesehen hatte, denn in der src/poetry_demo/__init__.py wird Code reingeschrieben, zum initialisieren unseres Programmes. Nun könnten wir dort auch stink normalen Code reinschreiben, aber dies wäre nicht so idiomatisch, oder findest du nicht? Besser wäre es, wenn wir eine neue Datei erstellen, von der unser Programm aus starten kann.

Dafür erstelle ich eine main.py Datei in src/poetry_demo/. Innerhalb der main.py kommt dann dieser Code hier:

poetry-demo/src/poetry_demo/main.py:

def main():
    print("Hello World")

## Führe die `main` Funktion aus,
## wenn wir `python main.py` benutzen,
## um unser Programm zu starten
if __name__ == "__main__":
    main()

Du fragst dich jetzt bestimmt warum definiere ich eine main Funktion? Wir können poetry genau sagen, welche Funktion wir von einer Datei ausgeführt haben wollen. Die main Funktion der main.py Datei wird unser Entrypoint unseres Projektes sein und in der Zukunft zuständig dafür sein, unser Pythonprojekt zu starten, aber jetzt wird es erstmal nur "Hello World" in die Konsole ausgeben.

Unser Programm können wir jezt mit diesem Befehl ausführen:

poetry run python src/poetry_demo/main.py
Hello World

Mit poetry run python führen wir exakt die Version an Python aus, die in der pyproject.toml definiert ist. Weil diese von den Python, das auf unserem System installiert ist, abweichen könnte, ist es besser poetry run python zu verwenden, anstelle nur python.

Aber oh mein Gott ist der Befehl lang und kompliziert. Das geht auch noch besser und einfacher und zwar mit einem "Script".

Poetry erlaubt es uns eigene Scripts zu erstellen, dafür editieren wir einmal kurz unsere pyproject.toml Datei. Am Ende der Datei fügen wir diese zwei Zeilen hinzu:

poetry-demo/pyproject.toml:

[tool.poetry.scripts]
start = "poetry_demo.main:main"

Dies bedeutet, dass wir einen neuen "run" Befehl erstellt haben, der vom src/poetry_demo dessen main.py Datei dessen main Funktion ausführt. Sprich poetry run start startet direkt die Funktion main in der Datei poetry-demo/src/poetry_demo/main.py. Aber halt stopp! Jedes mal, wenn wir in poetry einen neuen "run" Befehl erstellen, dann müssen wir vorher nur einmal poetry install eingeben:

poetry install
poetry run start
Hello World

Et voilà! Somit ist jetzt unser Projekt richtig aufgesetzt!

Du fragst dich jetzt vielleicht: "Warum so kompliziert? Man kann doch einfach weiterhin seinen Code in einer x-beliebigen Datei reinschreiben und mit python ausführen; ohne diesen ganzen Schnickschnack... Wozu braucht man poetry denn?"

In den nächsten Kapitel werden wir 3rd-Party Packages aus dem Internet runterladen müssen und poetry macht uns all das tausend-mal einfacher.

Zum Beispiel werde ich dir einmal schnell zeigen, wie man das Package "nltk", mit Hilfe poetry, installiert und wieder deinstalliert.