Python

Поліпшена швидкодія Python

Залежно від навантаження, можна спостерігати до 27% збільшення швидкодії у програмному забезпеченні на основі Python. Поліпшення швидкодії вдалося досягти збиранням інтерпретатора з ключем -fno-semantic-interposition. Оскільки у новій версії немає семантичної інтерпозиції, внутрішня прив’язка з libpython до libpython є безпосередньою і швидшою.

Наслідком цього є те, що якщо у користувачів Fedora виникне потреба у використанні LD_PRELOAD для перевизначення символів у libpython, рекомендованим способом є збирання нетипового Python без -fno-semantic-interposition. Втім, використання LD_PRELOAD для перевизначення в інших бібліотеках (наприклад glibc) усе ще можливе.

Python 2 вилучено

Підтримку Python 2 у основній гілці розробки Python припинено 1 січня 2020 року. З цієї причини у Fedora 32 вилучено пакунки Python 2.

Наступними пакунками більше не можна скористатися:

  • Пакунок python2 і усі його підпакунки.

  • Усі пакунки, для роботи яки потрібен Python 2.

  • Усі пакунки, яким потрібен Python 2 для збирання.

У Fedora 32 усе ще є застарілий пакунок python27. Цей пакунок призначено для розробників, яким потрібна підтримка Python 2, і користувачів, яким потрібно користуватися програмним забезпеченням, яке залежить від Python 2.

Пакунок python27 є дещо обмеженим, порівняно із оригінальним пакунком python2:

  • У пакунка немає підпакунків. Усі дані збережено у єдиному пакунку.

  • У пакунка немає діагностичної частини, яку раніше можна було встановити за допомогою пакунка python2-debug.

  • У пакунку немає виконуваного файла /usr/bin/python.

  • Усі спеціалізовані зворотно сумісні Provides вилучено (цей пакунок не призначено для формування на його основі залежностей).

Підтримку Nose визнано застарілою

Підтримку Nose визнано застарілою. Втім, починаючи з цієї версії, можна скористатися пакунком python3-nose зі сховищ пакунків Fedora. Випуску, у якому буде вилучено пакунок python3-nose ще не визначено.

Користувачам і пакувальникам залежних пакунків варто переходити на python3-pytest або python3-nose2.

Зауваження щодо перенесення встановлених користувачами пакунків pip

При оновленні Fedora 30 або 31до Fedora 32 версія основного інтерпретатора Python змінюється з 3.7 на 3.8. Якщо у вашій системі було встановлено якісь пакунки Python за допомогою pip, вам слід виконати наведені нижче дії для перенесення їх до нової версії:

  1. Встановіть попередню основну версію Python:

    sudo dnf install python3.7
  2. Отримайте pip для попередньої основної версії Python:

    python3.7 -m ensurepip --user
  3. Огляньте список встановлених пакунків:

    python3.7 -m pip list
  4. Збережіть список із вказаними версіями:

    python3.7 -m pip freeze > installed.txt
  5. Встановіть ті самі пакунки у новій типовій версії:

    python3 -m pip install --user -r installed.txt
  6. Вилучіть встановлені користувачем пакунки для 3.7 (вказана команда забезпечує вилучення файлів у ~/.local/bin):

    python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
  7. Якщо хочете, вилучіть тепер порожню структуру каталогів:

    rm -rf ~/.local/lib/python3.7/
  8. Якщо хочете, вилучіть непотрібну версію Python:

    sudo dnf remove python3.7

Крім того, якщо ви встановлювали пакунки pip за допомогою sudo, віддайте вказані нижче команди до виконання останнього кроку із вилученням `python3.7`, або знову тимчасово встановіть цю версію:

  1. Отримайте pip для попередньої основної версії Python для root:

    sudo python3.7 -m ensurepip
  2. Огляньте список загальносистемних встановлених пакунків:

    sudo python3.7 -m pip list
  3. Вилучіть встановлені для 3.7 пакунки (команда забезпечує належне вилучення файлів з /usr/local/bin):

    sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
  4. Якщо хочете, вилучіть тепер порожню структуру каталогів:

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

Якщо ви виконали першу процедуру, пакунки вже встановлено для вашого облікового запису користувача (цей варіант є бажаним). Не використовуйте надалі sudo pip. Наведені тут настанови стосуються лише тих, хто вже використовував sudo pip раніше.