Hello World

Lass un mal in diesem Projekt weiter 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 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 initialisiern 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:

src/poetry_demo/main.py:

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

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:

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 mit poetry run start wird jetzt unsere main Funktion ausgeführt:

Wir haben einen neuen Befehl namens „run“ angelegt. Dieser startet direkt die Funktion main in der Datei src/poetry_demo/main.py. Wenn du jetzt

poetry run start

eingibst, wird also unsere main-Funktion ausgeführt.

Falls bei deinem neuen "run" Befehl einen Error bekommst, dann musst du wahrscheinlich einmal vorher poetry install eingeben.

poetry install

Und danach sollte poetry run start ohne Probleme ausgeführt werden und du solltest diesen Output in der Konsole sehen:

Hello World

Et voilà! Somti 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.