Pubblicare con twine
Caricare su PyPI
Pubblicare con twine è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
L'ultimo passaggio
Ha creato gli artefatti in dist/. L'ultimo passaggio consiste nel caricarli su PyPI, così tutti potranno eseguire pip install per installare il pacchetto. Lo strumento standard per farlo è twine.
twine carica i file in modo sicuro tramite HTTPS e convalida gli artefatti prima dell'invio.
Installazione di twine
Lo installi con pip install twine. È uno strumento piccolo e mirato: il suo unico compito è convalidare e caricare i file presenti in dist/. Non crea alcun artefatto.
Prima TestPyPI
Esiste un ambiente sandbox separato, TestPyPI, per provare i caricamenti. Pubblichi prima lì, così potrà individuare i problemi senza compromettere l'indice reale. Nomi e versioni su TestPyPI sono indipendenti da PyPI.
Carichi i file con twine upload --repository testpypi dist/*.
Controlli prima del caricamento
twine check dist/* verifica che i metadati e la descrizione estesa vengano visualizzati correttamente su PyPI. Lo esegua ogni volta: altrimenti una descrizione README non valida potrebbe apparire come semplice testo nella pagina del progetto.
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)Token API, non password
Si autentichi con un token API del Suo account PyPI, non con la password. Utilizzi __token__ come nome utente e il token, che inizia con pypi-, come password. I token possono essere limitati a un singolo progetto e revocati in qualsiasi momento.
username = '__token__'
token = 'pypi-AgEIcHl...'
print('Username:', username)
print('Token starts with:', token[:5])
print('Never commit the token to git')Conservazione delle credenziali
Eviti di reinserire ogni volta i token salvandoli in un file ~/.pypirc o in variabili d'ambiente (TWINE_USERNAME, TWINE_PASSWORD). Mantenga questo file fuori dal controllo versione e ne limiti la lettura esclusivamente a Lei.
Caricamento su PyPI
Quando TestPyPI funziona correttamente, pubblichi il pacchetto vero e proprio con twine upload dist/*. In pochi istanti il pacchetto sarà installabile in tutto il mondo. Non è possibile annullare l'operazione: dopo aver eliminato una versione, non può ricaricare la stessa versione.
Le versioni sono immutabili
PyPI non consente mai di sovrascrivere una versione pubblicata. Se trova un bug dopo la pubblicazione, deve rilasciare una nuova versione, ad esempio incrementando la patch. Integri questa regola nel Suo flusso di lavoro, così non si troverà mai bloccato.
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')Verifichi l'installazione
Dopo il caricamento, verifichi che tutto funzioni: crei un nuovo ambiente virtuale ed esegua pip install mytool, quindi lo importi. L'installazione in un ambiente pulito permette di individuare file mancanti ed errori nelle dipendenze che la compilazione non ha rilevato.
Pubblicazione attendibile
I progetti moderni possono evitare i token manuali con la trusted publishing: PyPI autentica direttamente un flusso di lavoro CI, ad esempio GitHub Actions, tramite OpenID Connect. Non viene archiviato alcun segreto a lunga durata, con un livello di sicurezza maggiore.
twine esegue comunque il caricamento, ma le credenziali hanno durata breve e vengono rilasciate al momento dell'esecuzione.
Automazione dei rilasci
Una configurazione comune avvia un rilascio quando esegue il push di un tag git come v1.0.0. Il flusso di lavoro CI crea gli artefatti, esegue twine check e li carica automaticamente. La creazione del tag diventa l'unica azione necessaria per pubblicare una versione.
In questo modo i rilasci rimangono coerenti e si eliminano gli errori di caricamento manuale.
Verifica rapida
Metta alla prova le Sue conoscenze sulla pubblicazione.
Riepilogo
Ha pubblicato un pacchetto:
pip install twine, poitwine check dist/*- Provi prima su TestPyPI, prima del caricamento reale
- Si autentichi con un token API limitato a un progetto (
__token__), mai con una password twine upload dist/*pubblica il pacchetto; le versioni sono immutabili, quindi incrementi la versione per correggere i bug- Verifichi il risultato con un
pip installin un ambiente pulito
Domande Frequenti
La lezione «Pubblicare con twine» è gratuita?
Sì — il testo completo di «Pubblicare con twine» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Pubblicare con twine»?
Caricare su PyPI Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Pubblicare con twine»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Struttura del progetto e pyproject.toml
- Creazione con build
- Versionamento e metadati
- Pubblicare con twine