Contents
Introduzione
Python, il linguaggio orientato agli oggetti, interattivo e di alto livello, include una vasta libreria di classi con moltissime cose utili per la programmazione di rete, l'amministrazione di sistema, il suono e la grafica. Debian fornisce il più recente rilascio stabile di Python 3; fornisce anche il più recente rilascio stabile di Python 2, ma Python 2 non è più supportato dalla Python Foundation a partire dal 2020-01-01 e sta venendo rimosso da Debian 11 (Bullseye). Può anche fornire versioni aggiuntive, così come moltissimi pacchetti di terze parti. Python è una parte importante dell'ecosistema Debian.
Python è molto facile da imparare. Se si desidera cominciare a programmare in Python, si può iniziare con il Tutorial su Python o con il tutorial online ufficiale. Potrebbero essere interessanti anche il wiki di Python, le FAQ Python e la documentazione online.
Il software scritto nel linguaggio di programmazione Python viene eseguito dall'interprete Python. Solitamente è compilato in bytecode indipendente dalla piattaforma per aumentare le prestazioni. Python compila e scrive file bytecode *.pyc insieme ai sorgenti *.py. Moduli di estensione possono essere scritti anche in C e sono distribuiti come librerie condivise .so.
Il software scritto in puro Python può perciò essere distribuito come codice sorgente o come bytecode compilato. Quest'ultimo è simile a Java.
Python in Debian
Con centinaia di moduli Python e diverse versioni di Python gestite, Debian è la più grande "distribuzione integrata di Python". Gli utenti di altri sistemi operativi (ad esempio Windows e OS X) possono anch'essi beneficiare di questo sforzo di integrazione grazie alla virtualizzazione (vedere ad esempio la pagina di NeuroDebian VM per un facile approccio iniziale).
Fare anche riferimento alle pagine del wiki sulla Guida di stile per la pacchettizzazione e sulla pacchettizzazione di Python.
Dal 2015-10-09 tutti i pacchetti sono ora mantenuti in Git. La politica per l'uso di Git per i pacchetti del gruppo si può trovare qui.
NOTA BENE: Debian 11 (bullseye) ha rimosso il pacchetto "python" e il collegamento simbolico '/usr/bin/python' poiché Python 2 è diventato deprecato. Nessuno script pacchettizzato dovrebbe dipendere dall'esistenza di '/usr/bin/python': se lo fanno, ciò è un bug che dovrebbe essere segnalato a Debian. Si può usare il pacchetto 'python-is-python3' o 'python-is-python2' per ripristinare un collegamento simbolico '/usr/bin/python' appropriato per script di terze parti od obsoleti. Vedere anche Python/FAQ#Python_2_support.
Manutentori
All'interno del progetto Debian, i pacchetti Python sono mantenuti da sviluppatori singoli e da due team principali:
cpython-team mantiene il pacchetto del compilatore/interprete Python.
Il Team Debian Python mantiene alcuni moduli ed applicazioni Python.
Ci sono anche:
la mailing list debian-python con tutte le discussioni sullo sviluppo
il canale IRC #debian-python
Versioni di Python supportate
Debian Trixie attualmente contiene 3.12
Debian Bookworm contiene 3.11.
Debian Bullseye contiene 3.9, supporto minimo per 2.7)
Debian Buster contiene Python 3.7, 2.7
Debian Stretch contiene Python 2.7, 3.5
Debian Jessie contiene Python 2.7, 3.4
Debian Wheezy contiene Python 2.7, 3.2
Debian Squeeze contiene Python 2.5, 2.6 (il predefinito), 3.1.
Debian Lenny contiene Python 2.4 e 2.5 (il predefinito).
Debian Unstable contiene parte di 3.x, python2 è in fase di rimozione https://wiki.debian.org/Python/2Removal
Debian experimental può contenere anche alcuni pacchetti (sperimentali!) 3.x
Questi collegamenti elencano le distribuzioni che forniscono una particolare versione di Python:
Distribuzioni che forniscono python3.12
Distribuzioni che forniscono python3.11
Distribuzioni che forniscono python3.10
Distribuzioni che forniscono python3.9
Distribuzioni che forniscono python3.8 (nessuna)
Distribuzioni che forniscono python3.7
Distribuzioni che forniscono python3.6 (nessuna)
Distribuzioni che forniscono python3.5
Distribuzioni che forniscono python3.4
Distribuzioni che forniscono python3.3
Distribuzioni che forniscono python3.2
Distribuzioni che forniscono python3.1
Distribuzioni che forniscono python3.0 (nessuna)
Distribuzioni che forniscono python2.7
Distribuzioni che forniscono python2.6
Distribuzioni che forniscono python2.5
Distribuzioni che forniscono python2.4
Debian Python Policy per gli sviluppatori Python
La Debian Python Policy descrive le convenzioni per pacchettizzare e distribuire il codice Python in Debian.
Ogni domanda è benvenuta sulla mailing list debian-python@lists.debian.org
Se si desidera mantenere un pacchetto Python è necessario conoscere il funzionamento dello sviluppo Debian.
Deviazioni dalla versione a monte
Le distribuzioni Debian modificano Python originale in diversi modi che è bene avere chiari. Naturalmente, dove è possibile farlo, si cerca di minimizzare le deviazioni dalle versioni originali a monte, ma ecco un elenco dei cambiamenti che è possibile riscontrare in un sistema Debian (e derivati, come Ubuntu).
dist-packages invece di site-packages. Il software Python di terze parti installato da pacchetti Debian viene messo in dist-packages, non site-packages. Questo viene fatto per ridurre i conflitti tra i sistemi Python e quasiasi compilazione di Python dai sorgenti che l'utente può installare manualmente.
- I moduli standard profile e pstats non sono inclusi, a causa di clausole restrittive riguardo alla loro distribuzione nella loro licenza che non sono conformi alle DFSG. Sono tuttavia inclusi cProfile e hotshot.
In Debian 7 (Wheezy), il pacchetto python-setuptools installa il fork Distribute invece del standard setuptools. In Debian 8 (Jessie) si è ritornati al progetto setuptools unificato.
Intoltre in Debian 7 (Wheezy), anche python-virtualenv usa distribute in modo predefinito, ma può abilitare i classici setuptools con un parametro opzionale. Come per la voce precedente in Debian 8 (Jessie) vengono usati semplicemente i setuptools unificati.
distutils imposta i file di installazione degli script in /usr/local/ non in sys.prefix (che di solito è /usr/). Questo perché /usr/ è riservata ai file installati dai pacchetti Debian. Notare che /usr/local/lib/pythonX.Y/dist-packages è in sys.path in modo che si possa comunque accedere con il Python di sistema ai moduli non installati da pacchetti Debian. Strumenti come debhelper passano il parametro --install-layout=deb allo script di impostazione durante la compilazione di un pacchetto Debian in modo che installi i suoi file in /usr/ non /usr/local/.
Python 2.7, 3.3 e 3.4 possono essere usati con il ?Multiarch.
Pratiche incoraggiate
Linee guida per pacchettizzare librerie Python (include l'aggiunta del supporto a Python 3)
Linee guida per pacchettizzare applicazioni Python (include il supporto a Python 3)
Esiste un numero crescente di pacchetti python-*-dbg per moduli con estensioni. Forniscono estensioni compilate usando le librerie python*-dbg, permettendo di sfruttare il supporto di GDB per il debug di moduli ed estensioni Python in costante miglioramento. Quando si compilano moduli di estensione è raccomandato fornire anche i pacchetti -dbg corrispondenti
Convertire il proprio pacchetto a ?dh_python2
Installare dai sorgenti
Se si desidera la più recente versione, o una versione di sviluppo, di Python, sarà probabilmente necessario installarlo dai sorgenti. Per farlo, come prima cosa assicurarsi di avere le dipendenze di compilazione. Come root eseguire: "aptitude build-dep python3"
Scegliere la propria versione e scaricare l'"archivio sorgente compresso con gzip" della versione scelta dalla pagina degli scaricamenti di Python.
Una volta ottenuto l'archivio, estrarlo usando "tar -xvf Python-<NOME_COMPLETO_VERSIONE>.tgz". Una volta fatto, spostarsi nella directory con "cd Python-<NOME_COMPLETO_VERSIONE>" e usare il seguente comando per compilare Python dai sorgenti: "./configure && make && make test" (come utente regolare). Per installarlo globalmente senza danneggiare il Python di sistema installato con APT, usare il target altinstall (come root): "make altinstall".
Vedere anche
- Transizioni attuali
- Transizioni storiche
?FAQ del canale IRC #debian-python
?Quali pacchetti Python sono o non sono disponibili per Python3?