Python Academy · Les

Publiceren met twine

Upload naar PyPI

Les 4 van 413 stappen

Publiceren met twine is een gratis Python Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

De laatste stap

Je hebt artefacten in dist/ gebouwd. De laatste stap is ze naar PyPI uploaden, zodat iedereen je pakket met pip install kan installeren. Het standaardhulpmiddel hiervoor is twine.

twine uploadt veilig via HTTPS en controleert de artefacten voordat ze worden verzonden.

twine installeren

Installeer het met pip install twine. Het is een klein, doelgericht hulpmiddel: het controleert en uploadt uitsluitend de bestanden in dist/. Het bouwt niets.

Eerst TestPyPI

Er is een aparte testomgeving, TestPyPI, om uploads te oefenen. Publiceer daar eerst, zodat je problemen ontdekt zonder de echte index te vervuilen. Namen en versies op TestPyPI staan los van die op PyPI.

Upload met twine upload --repository testpypi dist/*.

Controleren vóór het uploaden

twine check dist/* controleert of je metagegevens en lange beschrijving correct op PyPI worden weergegeven. Voer dit elke keer uit; anders kan een kapotte README-beschrijving als platte tekst op je projectpagina verschijnen.

files = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in files:
    status = 'PASSED' if f.endswith(('.gz', '.whl')) else 'SKIP'
    print('check', f, '->', status)

API-tokens, geen wachtwoorden

Meld je aan met een API-token uit je PyPI-account, niet met je wachtwoord. Gebruik __token__ als gebruikersnaam en het token (dat met pypi- begint) als wachtwoord. Je kunt tokens beperken tot één project en op elk moment intrekken.

username = '__token__'
token = 'pypi-AgEIcHl...'
print('Username:', username)
print('Token starts with:', token[:5])
print('Never commit the token to git')

Inloggegevens opslaan

Voorkom dat je tokens opnieuw moet typen door ze op te slaan in een ~/.pypirc-bestand of in omgevingsvariabelen (TWINE_USERNAME, TWINE_PASSWORD). Houd dit bestand buiten versiebeheer en zorg dat alleen jij het kunt lezen.

Uploaden naar PyPI

Als TestPyPI er goed uitziet, publiceer je het echt met twine upload dist/*. Binnen enkele ogenblikken kan je pakket wereldwijd worden geïnstalleerd. Er is geen weg terug: je kunt dezelfde versie niet opnieuw uploaden nadat je die hebt verwijderd.

Versies zijn onveranderlijk

PyPI staat nooit toe dat je een uitgebrachte versie overschrijft. Als je na het publiceren een fout ontdekt, moet je een nieuwe versie uitbrengen, bijvoorbeeld door het patchnummer te verhogen. Verwerk deze regel in je werkstroom, zodat je nooit vastloopt.

published = {'1.0.0', '1.0.1'}
new_version = '1.0.1'
if new_version in published:
    print(new_version, 'already on PyPI - bump and rebuild')
else:
    print(new_version, 'is free to upload')

De installatie controleren

Controleer na het uploaden of alles werkt: maak een nieuwe virtuele omgeving en voer pip install mytool uit. Importeer het pakket daarna. Installeren vanuit een schone omgeving brengt ontbrekende bestanden en fouten in afhankelijkheden aan het licht die tijdens het bouwen niet werden ontdekt.

Vertrouwd publiceren

Moderne projecten kunnen handmatige tokens overslaan met vertrouwd publiceren: PyPI verifieert een CI-werkstroom, zoals GitHub Actions, rechtstreeks via OpenID Connect. Er wordt nergens een geheim opgeslagen dat lang geldig blijft, wat veiliger is.

twine voert de upload nog steeds uit, maar de inloggegevens zijn kort geldig en worden tijdens de uitvoering uitgegeven.

Releases automatiseren

Een gebruikelijke opzet start een release wanneer je een git-tag zoals v1.0.0 pusht. De CI-werkstroom bouwt het pakket, voert twine check uit en uploadt het automatisch. Een tag plaatsen wordt de enige handeling waarmee je een versie uitbrengt.

Zo blijven releases consistent en voorkom je fouten bij handmatig uploaden.

Korte toets

Toets je kennis van publiceren.

Samenvatting

Je hebt een pakket gepubliceerd:

  • pip install twine en daarna twine check dist/*
  • Oefen eerst op TestPyPI voordat je echt uploadt
  • Meld je aan met een API-token met beperkte reikwijdte (__token__), nooit met een wachtwoord
  • twine upload dist/* publiceert het pakket; versies zijn onveranderlijk, dus verhoog de versie om fouten te herstellen
  • Controleer met een schone pip install
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Publiceren met twine” gratis?

Ja — de volledige tekst van “Publiceren met twine” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Publiceren met twine”?

Upload naar PyPI Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Publiceren met twine”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Projectstructuur en pyproject.toml
  2. Bouwen met build
  3. Versiebeheer en metadata
  4. Publiceren met twine
← Terug naar Python Academy