-
Notifications
You must be signed in to change notification settings - Fork 0
05 Publishing
Dieser Guide beschreibt den vollstaendigen Ablauf vom lokalen Projekt bis zum oeffentlichen Paket auf pypi.org.
- Account auf pypi.org
- Optional: Account auf test.pypi.org (empfohlen fuer den ersten Durchlauf)
- Poetry installiert und Projekt laeuft lokal (
make testbestanden)
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.
poetry config pypi-token.pypi pypi-DEIN_TOKEN_HIERDer Token wird in der Poetry-Konfiguration gespeichert, nicht im Projekt. Er landet also nicht im Git-Repository.
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.0Alternativ mit expliziter Version:
python scripts/bump_version.py 1.0.0Manuelles Pruefen:
grep version pyproject.toml
grep __version__ src/manuscript_tools/__init__.pymake buildErzeugt unter dist/:
dist/
├── manuscript_tools-0.1.0.tar.gz # sdist
└── manuscript_tools-0.1.0-py3-none-any.whl # wheel
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 testpypiTesten ob die Installation funktioniert:
pip install --index-url https://test.pypi.org/simple/ manuscript-toolspoetry publishDas wars. Das Paket ist ab sofort unter pypi.org/project/manuscript-tools verfuegbar und mit pip install manuscript-tools installierbar.
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"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