Python

Amélioration des performances de Python

Selon la charge de travail, on peut observer une amélioration des performances allant jusqu’à 27 % pour les logiciels écrits en Python. L’amélioration des performances est obtenue en construisant l’interpréteur Python avec -fno-semantic-interposition. Comme il n’y a plus d’interposition sémantique, les recherches de symboles internes de bibliothèque libpython à libpython sont directes et plus rapides.

En conséquence, si les utilisateurs de Fedora ont besoin d’utiliser LD_PRELOAD pour remplacer des symboles dans libpython, la façon recommandée est de construire une version de Python personnalisée sans -fno-semantic-interposition. Cependant, il est toujours possible d’utiliser LD_PRELOAD pour remplacer les symboles d’autres bibliothèques (par exemple de la glibc).

Python 2 a été retiré

La communauté Python a arrêté le support de Python 2 le 1er janvier 2020. Pour cette raison, Fedora 32 a retiré les paquets Python 2.

Les paquets suivants ne sont plus disponibles :

  • Le paquet python2 et tous ses sous-paquets.

  • Tous les paquets qui ont besoin de Python 2 pour tourner.

  • Tous les paquets qui ont besoin de Python 2 pour être construits.

Fedora 32 propose toujours un paquet obsolète python27. Ce paquet est destiné aux développeurs qui ont besoin du support Python 2 et pour les utilisateurs ayant besoin de logiciels nécessitant Python 2.

Le paquet python27 a de nombreuses limitations par rapport au paquet python2 d’origine :

  • Le paquet n’a pas de sous-paquet. Tout le contenu est dans un unique paquet.

  • Le paquet ne propose pas d’information de débogage, qui était présente avant dans python2-debug.

  • Le paquet ne propose pas le binaire /usr/bin/python.

  • Les tags Provides de rétrocompatibilité ont été retirés (ce paquet n’est pas prévu pour être une dépendance).

Déprécation du support de Nose

Le support de Nose est maintenant déprécié. Pour le moment, le paquet python3-nose est encore disponible dans les dépôts Fedora. Aucune version n’est ciblée pour le moment pour l’effacement du paquet python3-nose des dépôts.

Les utilisateurs et empaqueteurs des paquets qui en dépendent sont encouragés à passer à python3-pytest ou python3-nose2.

Notes sur la migration des paquets pip installés par l’utilisateur

Lorsque vous mettez à niveau depuis Fedora 30 ou 31 vers Fedora 32, la version principale de l’interpréteur Python change de 3.7 à 3.8. Si vous avez des paquets python installés via pip, vous devez réaliser la procédure suivante pour les migrer vers la nouvelle version :

  1. Installez la précédente version principale de Python :

    sudo dnf install python3.7
  2. Récupérez pip pour la précédente version principale de Python :

    python3.7 -m ensurepip --user
  3. Observez les paquets installés :

    python3.7 -m pip list
  4. Sauvegardez la liste avec les versions spécifiques :

    python3.7 -m pip freeze > installed.txt
  5. Installez les mêmes paquets pour la version par défaut courante :

    python3 -m pip install --user -r installed.txt
  6. Désinstallez les paquets installés par l’utilisateur pour la 3.7 ; cela assure une suppression propre des fichiers dans`~/.local/bin` :

    python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
  7. Optionnellement, nettoyez la structure du dossier maintenant vide :

    rm -rf ~/.local/lib/python3.7/
  8. Optionnellement, supprimez la version de Python non nécessaire :

    sudo dnf remove python3.7

De plus, si vous avez des paquets pip installés via sudo, exécutez les commandes suivantes avant de lancer l’étape finale ci-dessus qui supprime `python3.7`, ou réinstallez-le temporairement :

  1. Récupérez pip pour la précédente version de Python pour root :

    sudo python3.7 -m ensurepip
  2. Observez les paquets système installés :

    sudo python3.7 -m pip list
  3. Désinstallez les paquets installés pour la 3.7 ; cela assure une suppression propre des fichiers dans`/usr/local/bin` :

    sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
  4. Optionnellement, nettoyez la structure du dossier maintenant vide :

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

Si vous avez suivi la première procédure, les paquets sont déjà installés pour votre compte d’utilisateur, ce qui est l’option préférée. Évitez d’utiliser sudo pip à l’avenir ; ces instructions sont uniquement destinées à récupérer les utilisateurs qui ont déjà utilisé sudo pip dans le passé.