> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# So erstellst du deine pyproject.toml-Datei

> Vollständige Anleitung zur pyproject.toml-Datei in Python: Lerne, wie du sie erstellst, Abhängigkeiten auflistest, Versionen festlegst und dein Projekt für die Produktion vorbereitest.

## pyproject.toml-Datei für Python

Die `pyproject.toml`-Datei ist eine moderne Möglichkeit, alle Anforderungen an das Build-System und die Abhängigkeiten deines Projekts in einer einzigen Datei anzugeben. Diese Anleitung zeigt, wie du `pyproject.toml` erstellst, konfigurierst und verwendest, um Konsistenz zwischen Entwicklungs- und Produktionsumgebungen sicherzustellen.

## Was ist eine pyproject.toml-Datei?

Eine `pyproject.toml` listet Abhängigkeiten, das Build-System und weitere Metadaten deines Python-Projekts auf. Das ermöglicht:

* Dir und deinem Team, identische Umgebungen zu pflegen
* Neuen Mitwirkenden, die Umgebung exakt zu reproduzieren
* Entwicklungs- und Produktionsabhängigkeiten getrennt einzurichten

***

<Steps>
  <Step title="Erstelle die pyproject.toml-Datei">
    Erstelle zunächst eine Datei namens `pyproject.toml` im Stammverzeichnis deines Projekts.
  </Step>

  <Step title="Lege die Details deines Projekts fest">
    Beginne in der `pyproject.toml`-Datei damit, die Metadaten deines Projekts zu definieren. Wir legen den Projektnamen, die Version, die Beschreibung und weitere relevante Informationen fest.\
    Der Projektname muss aus ASCII-Buchstaben, Ziffern, Unterstrichen „\_“, Bindestrichen „-“ und Punkten „.“ bestehen. Er darf nicht mit einem Unterstrich, Bindestrich oder Punkt beginnen oder enden. Zum Beispiel:

    ```toml pyproject.toml theme={null}
    [project]
    name = "my-python-project"
    description = "A sample Python project using pyproject.toml"
    version = "1.0.0"
    ```
  </Step>

  <Step title="Liste die Abhängigkeiten des Projekts auf">
    Als Nächstes listen wir die für unser Projekt erforderlichen Abhängigkeiten auf. Wir können sowohl Entwicklungs- als auch Produktionsabhängigkeiten angeben. Die Produktionsabhängigkeiten werden im Abschnitt `dependencies` aufgeführt, während Entwicklungsabhängigkeiten unter `optional-dependencies` mit einem bestimmten Gruppennamen (z. B. `dev`) aufgeführt werden können.\
    Du kannst Versionen für deine Abhängigkeiten mithilfe von Vergleichsoperatoren wie `==`, `>=`, `<`... angeben. Im folgenden Beispiel geben wir keine Versionen an. Das bedeutet, dass jeweils die neueste Version installiert wird.
    Es wird empfohlen, exakte Versionen anzugeben, um Reproduzierbarkeit sicherzustellen und Fehler durch inkompatible Updates in der Produktion zu vermeiden.

    ```toml pyproject.toml theme={null}
    [project]
    name = "my-python-project"
    description = "A sample Python project using pyproject.toml"
    version = "1.0.0"
    dependencies = [
        "discord-py",
        "aiohttp"
    ]

    [project.optional-dependencies]
    dev = [
        "pytest",
        "black"
    ]
    ```
  </Step>

  <Step title="Richte das Build-System ein">
    Schließlich müssen wir die Anforderungen an das Build-System angeben. Das ist notwendig, damit Tools wie pip wissen, wie sie dein Projekt bauen und installieren. Wir verwenden `setuptools` als Build-Backend, was eine gängige Wahl für Python-Projekte ist, aber du kannst auch andere wie `poetry` wählen.

    ```toml pyproject.toml theme={null}
    [project]
    name = "my-python-project"
    description = "A sample Python project using pyproject.toml"
    version = "1.0.0"
    dependencies = [
        "discord.py",
        "aiohttp"
    ]

    [project.optional-dependencies]
    dev = [
        "pytest",
        "black"
    ]

    [build-system]
    requires = ["setuptools"]
    build-backend = "setuptools.build_meta"
    ```
  </Step>
</Steps>

***

## Abhängigkeiten mit pip installieren

Um die in deiner `pyproject.toml`-Datei aufgeführten Abhängigkeiten zu installieren, kannst du pip oder andere Tools verwenden, die `pyproject.toml` unterstützen. So kannst du an deinem Projekt arbeiten, während die Abhängigkeiten installiert sind.

```bash theme={null}
pip install .
```

Dieser Befehl liest die `pyproject.toml`-Datei, installiert die unter `dependencies` aufgeführten Abhängigkeiten und richtet dein Projekt für die Entwicklung ein. Wenn du auch die Entwicklungsabhängigkeiten installieren möchtest, kannst du Folgendes verwenden:

```bash theme={null}
pip install .[dev]
```

Damit werden sowohl die Produktions- als auch die Entwicklungsabhängigkeiten installiert, sodass du mit allen notwendigen Tools an deinem Projekt arbeiten kannst.

## Best Practices und Tipps:

* **Aktuell halten**: Überprüfe und aktualisiere `pyproject.toml` regelmäßig, wenn du neue Abhängigkeiten hinzufügst
* **Exakte Versionen verwenden**: Verwende immer `==` statt `>`, `>=` oder keiner Version, um Überraschungen in der Produktion zu vermeiden
* **Versionierung**: Committe `pyproject.toml` in git, um Änderungen an Abhängigkeiten und Versions-Updates nachzuverfolgen
* **Isolierte Umgebung**: Pflege eine virtuelle Umgebung pro Projekt, um globale Konflikte zu vermeiden
* **Lokal testen**: Teste die Datei vor dem Deploy mit `pip install .` in einer neuen Umgebung

***

## Nächste Schritte

Wenn deine `pyproject.toml`-Datei konfiguriert ist:

1. Committe sie in dein Git-Repository.
2. Hoste dein Projekt auf **Square Cloud**.
3. Richte automatischen Deploy über GitHub ein.
4. Willkommen beim professionellen Hosting von Python-Anwendungen!

Eine gut strukturierte `pyproject.toml`-Datei ist die Grundlage für jede erfolgreiche Python-Anwendung und stellt sicher, dass deine Anwendung auf Square Cloud einwandfrei funktioniert.
