Skip to content

05 Publishing

Asterios Raptis edited this page Mar 7, 2026 · 4 revisions

Publishing auf PyPI

Dieser Guide beschreibt den vollstaendigen Ablauf vom lokalen Projekt bis zum oeffentlichen Paket auf pypi.org.

Voraussetzungen

  • Account auf pypi.org
  • Optional: Account auf test.pypi.org (empfohlen fuer den ersten Durchlauf)
  • Poetry installiert und Projekt laeuft lokal (make test bestanden)

Schritt 1: API-Token generieren

Auf pypi.org einloggen, dann: Account Settings, API Tokens, "Add API token".

  • Name: z.B. manuscript-tools-publish
  • Scope: Beim ersten Mal "Entire account", danach auf das Projekt einschraenken

Token kopieren (beginnt mit pypi-). Wird nur einmal angezeigt.

Schritt 2: Token bei Poetry hinterlegen

poetry config pypi-token.pypi pypi-DEIN_TOKEN_HIER

Der Token wird in der Poetry-Konfiguration gespeichert, nicht im Projekt. Er landet also nicht im Git-Repository.

Schritt 3: Version pruefen und erhoehen

Die Version steht in pyproject.toml und src/manuscript_tools/__init__.py. Das Bump-Skript haelt beide synchron:

make bump-patch   # 0.2.0 -> 0.2.1
make bump-minor   # 0.2.0 -> 0.3.0
make bump-major   # 0.2.0 -> 1.0.0

Alternativ mit expliziter Version:

python scripts/bump_version.py 1.0.0

Manuelles Pruefen:

grep version pyproject.toml
grep __version__ src/manuscript_tools/__init__.py

Schritt 4: Bauen

make build

Erzeugt unter dist/:

dist/
├── manuscript_tools-0.1.0.tar.gz    # sdist
└── manuscript_tools-0.1.0-py3-none-any.whl  # wheel

Schritt 5: Testen auf TestPyPI (empfohlen)

TestPyPI ist eine separate Instanz zum Ausprobieren. Eigener Account noetig.

# TestPyPI-Repository registrieren
poetry config repositories.testpypi https://test.pypi.org/legacy/
poetry config pypi-token.testpypi pypi-DEIN_TEST_TOKEN

# Publizieren
poetry publish -r testpypi

Testen ob die Installation funktioniert:

pip install --index-url https://test.pypi.org/simple/ manuscript-tools

Schritt 6: Auf PyPI publizieren

poetry publish

Das wars. Das Paket ist ab sofort unter pypi.org/project/manuscript-tools verfuegbar und mit pip install manuscript-tools installierbar.

Vollstaendiger Release-Workflow

Zusammengefasst als Checkliste:

# 1. Sicherstellen dass alles sauber ist
make ci

# 2. Version erhoehen (sync pyproject.toml + __init__.py)
make bump-patch  # oder bump-minor / bump-major

# 3. Commit und Tag
git add -A
git commit -m "chore: bump version to $(poetry version -s)"
git tag -a "v$(poetry version -s)" -m "v$(poetry version -s)"

# 4. Push
git push origin main --tags

# 5. Bauen und publizieren
make build
poetry publish

Haeufige Probleme

"File already exists": PyPI akzeptiert keine Version, die bereits existiert. Loesung: Version erhoehen, auch fuer Korrekturen.

"Invalid API token": Token ist abgelaufen oder falsch kopiert. Neues Token generieren und mit poetry config pypi-token.pypi erneut setzen.

"Name already taken": Ein anderer Nutzer besitzt den Paketnamen. Den Paketnamen in pyproject.toml unter [tool.poetry] name aendern. In diesem Fall ist manuscript-tools bereits reserviert und dir zugeordnet, also kein Problem.


Zurueck: Integration | Weiter: Entwicklung und CI

Clone this wiki locally