Python

Verbeterde prestaties van Python

Afhankelijk van de werklast worden nu prestatieverbeteringen tot 27% waargenomen in op Python gebaseerde software. De verbeterde prestatie wordt bereikt door de Python-interpreter te bouwen met -fno-semantic-interposition. Omdat er nu geen semantische interpositie is, zijn de interne symboolzoekopdrachten van libpython naar` libpython` bibliotheek direct en sneller.

Als gevolg hiervan, als Fedora gebruikers LD_PRELOAD moeten gebruiken om symbolen in` libpython` te overschrijven, is de aanbevolen manier om een aangepaste Python-build te bouwen zonder -fno-semantic-interposition. Het is echter nog steeds mogelijk om LD_PRELOAD te gebruiken om symbolen in andere bibliotheken te overschrijven (bijvoorbeeld in glibc).

Python 2 is verwijderd

De Python upstream stopte met het ondersteunen van Python 2 op 1 januari 2020. Om deze reden verwijdert Fedora 32 Python 2 pakketten.

De volgende pakketten zijn niet meer beschikbaar:

  • Het python2 pakket en alle subpakketten.

  • Alle pakketten die Python 2 nodig hebben om te worden uitgevoerd.

  • Alle pakketten die Python 2 nodig hebben te worden gebouwd.

Fedora 32 biedt nog steeds een verouderd python27 pakket aan. Dit pakket is bedoeld voor ontwikkelaars die Python 2 moeten ondersteunen en voor gebruikers die software gebruiken die afhangt van Python 2.

Het python27 pakket heeft verscheidene beperkingen vergeleken met het originele python2 pakkey:

  • Het pakket heeft geen subpakketten. Alle inhoud is opgeslagen in het enkele pakket.

  • Het pakket biedt geen debug bouw aan, welke vroeger beschikbaar was als python2-debug.

  • Het pakket biedt het binaire programma /usr/bin/python niet aan.

  • Alle speciale backwards-compatibele Provides zijn verwijderd (dit pakket is niet bedoeld om afhankelijk van te worden).

Verouderde ondersteuning voor Nose

Ondersteuning voor Nose is nu beëindigd. Maar voorlopig blijft het python3-nose pakket beschikbaar in de Fedora repositories. Er is nog niet op een specifieke release gericht voor het verwijderen van het python3-nose pakket.

Gebruikers en verpakkers van afhankelijke pakketten worden aangemoedigd om over te gaan naar python3-pytest of python3-nose2.

Opmerkingen over het migreren van door de gebruiker geïnstalleerde pip-pakketten

Wanneer je upgrade van Fedora 30 of 31 naar Fedora 32, verandert de belangrijkste Python interpreter versie van 3.7 naar 3.8. Als je Python-pakketten hebt geïnstalleerd met pip, moet je de volgende procedure volgen om ze naar de nieuwe versie te migreren:

  1. Installeer de voorheen belangrijkste Python-versie:

    sudo dnf install python3.7
  2. Haal pip op voor de voorheen belangrijkste Python-versie:

    python3.7 -m ensurepip --user
  3. Let op de geïnstalleerde pakketten:

    python3.7 -m pip list
  4. Bewaar de lijst met specifieke versies:

    python3.7 -m pip freeze > installed.txt
  5. Installeer dezelfde pakketten voor de nu standaardversie:

    python3 -m pip install --user -r installed.txt
  6. Verwijder door de gebruiker geïnstalleerde pakketten voor 3.7; dit zorgt voor een correcte verwijdering van bestanden in ~/.local/bin:

    python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
  7. Ruim optioneel de nu lege mapstructuur op:

    rm -rf ~/.local/lib/python3.7/
  8. Verwijder optioneel de onnodige Python-versie:

    sudo dnf remove python3.7

Bovendien, als je pip pakketten geïnstalleerd hebt met sudo, voer dan de volgende commando’s uit voordat je de laatste stap hierboven uitvoert die python3.7 verwijdert, of installeer het tijdelijk opnieuw:

  1. Haal pip voor de voorheen belangrijkste Python-versie voor root:

    sudo python3.7 -m ensurepip
  2. Let op de door het systeem geïnstalleerde pakketten:

    sudo python3.7 -m pip list
  3. Verwijder geïnstalleerde pakketten voor 3.7; dit zorgt voor een correcte verwijdering van bestanden in /usr/local/bin:

    sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
  4. Maak nu optioneel de lege mapstructuur schoon:

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

Als je de eerste procedure heeft gevolgd, zijn de pakketten al geïnstalleerd voor jouw gebruikersaccount, wat de voorkeursoptie is. Vermijd het gebruik van sudo pip in de toekomst; deze instructies zijn alleen bedoeld om gebruikers te herstellen die in het verleden al sudo pip hebben gebruikt.