Python

Python 2 is deprecated in Fedora 30

Muitos módulos do Python 2 foram removidos da dsitribuição: pacotes que só fornecem módulos importáveis do Python 2, se não forem usados por nenhum outro pacote (leaf packages).

While this change should not affect regular users, it will affect developers that use system-packaged Python modules.

Se você está desenvolvendo um software que precisa ser rodado com Python 2, recomendamos a utilização de um ambiente virtual e a instalação de dependências através do Python Package index (PyPI). Mais detalhes em: https://developer.fedoraproject.org/tech/languages/python/python-installation.html

Também recomendamos a utilização de um ambiente virtual (venv) para Python 3 se seu software tiver como alvo um ecossistema alvo mais amplo do que especificamente o Fedora. Utilizar o venv irá desacoplar o seu ambiente de desenvolvimento do sistema.

Se você está desenvolvendo para um pacote Fedora, por favor mude para Python 3 o quanto antes. Uma remoção quase completa do Python 2 é planejada para a próxima versão.

Dependências geradas automaticamente para pacotes Python

The generator which generates Provides and Requires for Python RPM packages based on the setup.py file has been enabled by default. This makes the packaging of Python packages easier and more automatic by reusing information provided by the upstream project, and should result in fewer unecessary or missing dependencies in RPMs.

Python progressbar replaced with progressbar2

O pacote progressbar foi atualizado para utilizar o fork progressbar2, mais novo e com uma melhor manutenção.

Extensões do Nautilus agora utilizam Python 3

Como parte da mudança geral para Python 3, extensões para o browser de arquivos e shell gráfica Nautilus agora são executadas utilizando Python 3, e extensões compatíveis apenas com o Python 2 não possuem mais suporte. Extensões disponibilizadas com a distribuição foram atualizadas para Python 3. Usuários que instalaram suas próprias extensões devem verificar sua compatibilidade ou removê-las.

Evite utilizar flags de build específicas do Fedora em extensões não-RPM do Python

When extension modules are built, the distutils module provides a set of compilation and link flags to ensure that modules are compiled in a way which is compatible with Python executable itself. When building modules in Fedora, the same set of flags was used for modules which are part of the distribution (i.e. part of an RPM package) and for modules compiled by users using Fedora. Those flags included custom GCC plugins and additional linker options to "harden" the code and add annobin annotations, which is appropriate for the distribution, but unexpected and unnecessary for user code. A distinct and smaller set of flags is now provided for extension modules compiled by users.

The build flags (CFLAGS, CXXFLAGS and LDFLAGS) saved in the Python’s distutils module for building extension modules are switched from:

  • %{build_cflags},

  • %{build_cxxflags} and

  • %{build_ldflags}

to

  • %{extension_cflags},

  • %{extension_cxxflags} and

  • %{extension_ldflags}.

This currently means that no GCC plugins (such as annobin) are activated and no GCC spec files (-specs= arguments) are used by default when building Python extension modules (e.g. with python3 setup.py build).

The python3-devel package will lose its runtime dependency on redhat-rpm-config (which was only required for annobin support and GCC spec files).

The change affects building extension modules by users, outside of the RPM environment. The Python standard library and Fedora’s Python 3 RPM packages are still built with the "traditional" set of flags (%{build_cflags} etc.), unless the package uses nonstandard methods to build the extensions.

Only Python 3.7 and 3.6 will be changed.

For detailed information about this change, including justification and impact on Python developers and packages, see the Change page on the Wiki.