Documentation for a newer release is available. View Latest

Python

Python 2 è deprecato in Fedora 30

Molti moduli Python 2 sono stati rimossi dalla distribuzione: si tratta di pacchetti che forniscono esclusivamente moduli importabili per Python 2, qualora non siano utilizzati da nessun altro pacchetto (pacchetti "foglia").

Sebbene questa modifica non dovrebbe influire sugli utenti comuni, interesserà gli sviluppatori che utilizzano moduli Python pacchettizzati dal sistema.

Se stai sviluppando software che deve essere eseguito con Python 2, ti consigliamo di utilizzare un ambiente virtuale e di installare le dipendenze dal Python Package Index (PyPI). Consulta i dettagli su: https://developer.fedoraproject.org/tech/languages/python/python-installation.html

Ti consigliamo inoltre di utilizzare un ambiente virtuale (venv) per Python 3, qualora il tuo software sia rivolto all’ecosistema Python in generale piuttosto che specificamente a Fedora. L’uso di `venv`scollegherà il tuo ambiente di sviluppo dal sistema.

Se stai sviluppando per un pacchetto Fedora, ti preghiamo di effettuare il porting a Python 3 il prima possibile. La rimozione quasi completa di Python 2 è prevista per il prossimo rilascio.

Dipendenze generate automaticamente per i pacchetti Python

Il generatore che crea i campi "Provides" e "Requires" per i pacchetti RPM di Python basandosi sul file setup.py è stato abilitato per impostazione predefinita. Questo rende la creazione di pacchetti Python più semplice e automatica, riutilizzando le informazioni fornite dal progetto a monte, e dovrebbe tradursi in un minor numero di dipendenze superflue o mancanti negli RPM.

Sì, esatto. Questo cambiamento riflette l’aggiornamento dei repository verso una versione più moderna e attivamente mantenuta della libreria

Il pacchetto progressbar è stato aggiornato per utilizzare il fork progressbar2, che è più recente e meglio mantenuto.

Le estensioni di Nautilus utilizzano ora Python 3

Come parte della transizione generale verso Python 3, le estensioni per il file browser e la shell grafica Nautilus vengono ora eseguite utilizzando Python 3; le estensioni compatibili solo con Python 2 non sono più supportate. Le estensioni incluse nella distribuzione sono state aggiornate per essere compatibili con Python 3. Gli utenti che hanno installato le proprie estensioni dovrebbero verificarne la compatibilità con Python 3 o rimuoverle.

Evitare flag di compilazione specifici di Fedora nelle estensioni Python non RPM

Quando vengono compilati i moduli di estensione, il modulo distutils fornisce un set di flag di compilazione e collegamento per garantire che i moduli siano compilati in modo compatibile con l’eseguibile Python stesso.

I flag di compilazione (CFLAGS, CXXFLAGS`e `LDFLAGS) salvati nel modulo `distutils`di Python per la compilazione dei moduli di estensione sono stati modificati da:

  • %{build_cflags}

  • `%{build_cxxflags}`and

  • %{build_ldflags}

to

  • %{extension_cflags}

  • %{extension_cxxflags}

  • %{extension_ldflags}.

Questo attualmente indica che, per impostazione predefinita, non viene attivato alcun plugin GCC (come annobin) e non viene utilizzato alcun file spec di GCC (argomenti -specs=) durante la compilazione di moduli di estensione Python (ad esempio con python3 setup.py build).

Il pacchetto python3-devel perderà la sua dipendenza di runtime da`redhat-rpm-config` (che era necessaria solo per il supporto ad annobin e per i file spec di GCC).

La modifica interessa la creazione di moduli di estensione da parte degli utenti al di fuori dell’ambiente RPM. La libreria standard di Python e i pacchetti RPM di Python 3 in Fedora vengono ancora compilati con il set di flag "tradizionale" (%{build_cflags}, ecc.), a meno che il pacchetto non utilizzi metodi non standard per compilare le estensioni.

Solo Python 3.7 e 3.6 saranno modificati.

Per informazioni dettagliate su questa modifica, inclusi la giustificazione e l’impatto sugli sviluppatori e sui pacchetti Python, consultare la pagina della modifica sul Wiki.