Python

İyileştirilmiş Python performansı

İş yüküne bağlı olarak, Python tabanlı yazılımlarda artık %27’ye varan performans iyileştirmeleri gözlenmektedir. Performans iyileştirmeleri, Python yorumlayıcısının -fno-semantic-interposition seçeneğiyle derlenmesiyle elde edilmektedir. Artık bir anlamsal müdahale olmadığı için, libpython ile libpython kütüphanesi arasındaki dahili sembol aramaları doğrudan ve daha hızlıdır.

Sonuçlara göre, Fedora kullanıcılarının libpython da bulunan sembolleri kullanım dışı yapmaları için LD_PRELOAD yapmaları gerekiyorsa, önerilen yol -fno-semantic-interposition olmadan özel bir Python derlemesi oluşturmaktır. Bununla birlikte, diğer kütüphanlerdeki sembolleri (mesela glibc) geçersiz kılmak için LD_PRELOAD kullanmak da hala uygundur.

Python 2 kaldırıldı

Python projesi 1 Ocak 2020’de Python 2’yi desteklemeyi bıraktı. Bu nedenle, Fedora 32’de Python 2 paketleri kaldırıldı.

Aşağıdaki paketler artık kullanılabilir değil:

  • python2 paketi ve tüm alt paketleri.

  • Çalıştırmak için Python 2 gerektiren tüm paketler.

  • Oluşturmak için Python 2 gerektiren tüm paketler.

Fedora 32 yine de geriye dönük bir python27 paketi sağlamaktadır. Bu paket, Python 2’yi desteklemesi gereken geliştiriciler ve Python 2’ye bağımlı yazılımlar kullanmaya ihtiyaç duyan kullanıcılar için tasarlanmıştır.

python27 paketinin orijinal python2 paketiyle karşılaştırıldığında birtakım kısıtlamaları bulunmaktadır:

  • Paketin alt paketleri yoktur. Tüm içerik tek bir pakete dahil edilmiştir.

  • Paket, daha önce python2-debug olarak kullanılabilen hata ayıklama derlemesi sağlamamaktadır.

  • Paket, /usr/bin/python programını sağlamamaktadır.

  • Tüm 'özel' geriye dönük uyumlu sağlayıcılar kaldırıldı (bu paketin üste bağlı olması amaçlanmamıştır).

Nose için destek kaldırdı

Nose için destek kaldırıldı. Bununla birlikte, python3-nose paketi hala Fedora depolarında erişime açık olacak. Henüz herhangi bir sürümde python3-nose paketinin kaldırılması planlanmadı.

Kullanıcıların ve bağımlı paketlerin paketleyicilerinin python3-pytest veya `python3-nose2`e geçmeleri önerilir.

Notes on migrating user-installed pip packages

When you upgrade from Fedora 30 or 31 to Fedora 32, the main Python interpreter version changes from 3.7 to 3.8. If you have any Python packages installed using pip, you must complete the following procedure to migrate them to the new version:

  1. Install the previously main Python version:

    sudo dnf install python3.7
  2. Get pip for the previously main Python version:

    python3.7 -m ensurepip --user
  3. Observe the installed packages:

    python3.7 -m pip list
  4. Save the list with specific versions:

    python3.7 -m pip freeze > installed.txt
  5. Install the same packages for the now default version:

    python3 -m pip install --user -r installed.txt
  6. Uninstall user-installed packages for 3.7; this ensures proper removal of files in ~/.local/bin:

    python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
  7. Optionally, clean up the now empty directory structure:

    rm -rf ~/.local/lib/python3.7/
  8. Optionally, remove the unneeded Python version:

    sudo dnf remove python3.7

Additionally, if you have any pip packages installed using sudo, run the following commands before running the final step above which removes `python3.7`, or install it again temporarily:

  1. Get pip for the previously main Python version for root:

    sudo python3.7 -m ensurepip
  2. Observe the system-installed packages:

    sudo python3.7 -m pip list
  3. Uninstall installed packages for 3.7; this ensures proper removal of files in /usr/local/bin:

    sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
  4. Optionally, clean up now empty directory structure:

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

If you followed the first procedure, the packages are already installed for your user account, which is the preferred option. Avoid using sudo pip in the future; these instructions are only intended to recover users who already used sudo pip in the past.