Documentation for a newer release is available. View Latest

Python

Miglioramento delle prestazioni di Python

A seconda del carico di lavoro, si osserva ora un miglioramento delle prestazioni fino al 27% nei software basati su Python. Questo incremento è stato ottenuto compilando l’interprete Python con l’opzione`-fno-semantic-interposition`. Poiché l’interposizione semantica non è più attiva, la ricerca dei simboli interni all’interno della libreria libpython avviene in modo diretto e più veloce.

Di conseguenza, se gli utenti Fedora hanno la necessità di utilizzare LD_PRELOAD per sovrascrivere i simboli in libpython, il metodo raccomandato è quello di creare una build personalizzata di Python senza l’opzione -fno-semantic-interposition. Tuttavia, è ancora possibile utilizzare LD_PRELOAD per sovrascrivere i simboli in altre librerie (ad esempio in glibc).

Python 2 è stato rimosso

Il team di sviluppo di Python ha rimosso il supporto per Python 2 il 1° gennaio 2020. Per questo motivo, Fedora 32 rimuove i pacchetti Python 2.

I seguenti pacchetti non sono più disponibili:

  • Il pacchetto `python2`e tutti i suoi sottopacchetti.

  • Tutti i pacchetti che richiedono Python 2 per essere eseguiti.

  • Tutti i pacchetti che richiedono Python 2 per la compilazione.

Fedora 32 fornisce ancora un pacchetto legacy python27. Questo pacchetto è destinato agli sviluppatori che devono supportare Python 2 e agli utenti che hanno necessità di utilizzare software dipendente da Python 2.

Il pacchetto python27`presenta diverse limitazioni rispetto al pacchetto originale `python2:

  • Il pacchetto non ha sottopacchetti. Tutto il contenuto è memorizzato nel pacchetto singolo.

  • Il pacchetto non fornisce una build di debug, precedentemente disponibile come python2-debug.

  • Il pacchetto non fornisce il file binario /usr/bin/python.

  • Tutti i Provides speciali per la compatibilità all’indietro sono stati rimossi (questo pacchetto non è destinato a essere utilizzato come dipendenza).

Supporto deprecato per Nose

Il supporto per Nose è ora deprecato. Tuttavia, per il momento, il pacchetto python3-nose continua a essere disponibile nei repository di Fedora. Non è ancora stata stabilita una versione specifica per la rimozione definitiva del pacchetto python3-nose.

Gli utenti e i manutentori dei pacchetti dipendenti sono incoraggiati a passare a python3-pytest-pytest o python3-nose2-nose2.

Ecco alcune note sulla migrazione dei pacchetti pip installati dall’utente (solitamente in ~/.local/lib/python3.x/site-packages) durante l’avanzamento di versione di Fedora:

Quando si esegue l’aggiornamento da Fedora 30 o 31 a Fedora 32, la versione dell’interprete Python principale passa dalla 3.7 alla 3.8. Se sono stati installati pacchetti Python tramite pip, è necessario completare la seguente procedura per migrarli alla nuova versione:

  1. Installare la precedente versione principale di Python:

    FreeIPA utilizza ora Python 3.
  2. Ottenere `pip`per la versione di Python precedentemente principale:

    python3.7 -m ensurepip --user
  3. Osserva i pacchetti installati:

    python3.7 -m pip list
  4. Salva l’elenco con le versioni specifiche:

    python3.7 -m pip freeze > installed.txt
  5. Installa i medesimi pacchetti per la versione ora predefinita:

    python3 -m pip install --user -r installed.txt
  6. Disinstalla i pacchetti installati dall’utente per la versione 3.7; questo garantisce la corretta rimozione dei file in ~/.local/bin:

    python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
  7. Opzionalmente, ripulisci la struttura delle directory ora vuota:

    rm -rf ~/.local/lib/python3.7/
  8. Opzionalmente, rimuovi la versione di Python non necessaria:

    "Ruomuovi python3.7 utilizzando dnf con privilegi di amministratore."

"Inoltre, se hai dei pacchetti pip installati tramite sudo, esegui i seguenti comandi prima di procedere con l’ultimo passaggio descritto sopra per la rimozione di python3.7, oppure reinstallalo temporaneamente:"

  1. Ottieni pip per la versione di Python precedentemente principale per l’utente root:

    sudo python3.7 -m ensurepip
  2. Osserva i pacchetti installati nel sistema:

    sudo python3.7 -m pip list
  3. Disinstalla i pacchetti installati per la versione 3.7; questo garantisce la corretta rimozione dei file in /usr/local/bin:

    sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
  4. Opzionalmente, pulire la struttura delle directory ora vuota:

    sudo rm -rf /usr/local/lib*/python3.7/

Se hai seguito la prima procedura, i pacchetti sono già installati per il tuo account utente, che è l’opzione preferibile. In futuro, evita di usare sudo pip; queste istruzioni hanno il solo scopo di ripristinare i sistemi degli utenti che hanno utilizzato sudo pip in passato.