Documentation for a newer release is available. View Latest

Python

Python 2 объявлен устаревшим в Fedora 30

Многие модули Python 2 были удалены из дистрибутива: пакеты, которые предоставляют только импортируемые модули Python 2, если они не используются каким-либо другим пакетом (конечные пакеты).

Хотя это изменение не должно повлиять на обычных пользователей, оно затронет разработчиков, которые используют системные пакеты Python.

Если вы разрабатываете программное обеспечение, которому требуется Python 2, мы рекомендуем использовать виртуальное окружение и устанавливать зависимости из индекса пакетов Python (PyPI). Подробности см. по адресу: https://developer.fedoraproject.org/tech/languages/python/python-installation.html

Мы также рекомендуем использовать виртуальное окружение (venv) для Python 3, если ваше программное обеспечение ориентировано на более широкую экосистему Python, а не конкретно на Fedora. Использование venv отделит вашу среду разработки от системы.

Если вы разрабатываете для пакета Fedora, пожалуйста, перенесите код на Python 3 как можно скорее. В следующем выпуске запланировано практически полное удаление Python 2.

Автоматически генерируемые зависимости для пакетов Python

Генератор, который создаёт Provides и Requires для RPM-пакетов Python на основе файла setup.py, включён по умолчанию. Это упрощает и автоматизирует упаковку пакетов Python за счёт повторного использования информации, предоставленной вышестоящим проектом, и должно привести к уменьшению количества ненужных или отсутствующих зависимостей в RPM.

Python progressbar заменён на progressbar2

Пакет progressbar был обновлён до использования форка progressbar2, который новее и лучше поддерживается.

Расширения Nautilus теперь используют Python 3

В рамках общего перехода на Python 3 расширения для файлового менеджера и графической оболочки Nautilus теперь выполняются с использованием Python 3, а расширения, совместимые только с Python 2, больше не поддерживаются. Расширения, упакованные в дистрибутив, были обновлены для совместимости с Python 3. Пользователям, установившим собственные расширения, следует проверить их совместимость с Python 3 или удалить их.

Избегайте специфических для Fedora флагов сборки в расширениях Python не из RPM

При сборке модулей расширения модуль distutils предоставляет набор флагов компиляции и компоновки, чтобы гарантировать, что модули компилируются совместимым с самим исполняемым файлом Python способом. При сборке модулей в Fedora один и тот же набор флагов использовался как для модулей, входящих в дистрибутив (т.е. входящих в RPM-пакет), так и для модулей, компилируемых пользователями использующими Fedora. Эти флаги включали пользовательские плагины GCC и дополнительные параметры компоновщика для «усиления» кода и добавления аннотаций annobin, что подходит для дистрибутива, но неожиданно и излишне для пользовательского кода. Теперь для модулей расширения, компилируемых пользователями, предоставляется отдельный и меньший набор флагов.

Флаги сборки (CFLAGS, CXXFLAGS и LDFLAGS), сохранённые в модуле distutils Python для сборки модулей расширения, заменяются с:

  • %{build_cflags},

  • %{build_cxxflags} и

  • %{build_ldflags}

на

  • %{extension_cflags},

  • %{extension_cxxflags} и

  • %{extension_ldflags}.

Это в настоящее время означает, что при сборке модулей расширения Python (например, с помощью python3 setup.py build) по умолчанию не активируются никакие плагины GCC (такие как annobin) и не используются файлы спецификаций GCC (аргументы -specs=).

Пакет python3-devel потеряет свою зависимость во время выполнения от redhat-rpm-config (которая требовалась только для поддержки annobin и файлов спецификаций GCC).

Изменение влияет на сборку модулей расширения пользователями вне среды RPM. Стандартная библиотека Python и RPM-пакеты Python 3 в Fedora по-прежнему собираются с «традиционным» набором флагов (%{build_cflags} и т. д.), если только пакет не использует нестандартные методы сборки расширений.

Изменения коснутся только Python 3.7 и 3.6.

Подробную информацию об этом изменении, включая обоснование и влияние на разработчиков Python и пакеты, см. на странице изменений в Вики.