Documentation for a newer release is available. View Latest

Python

Python 2 està obsolet a Fedora 30

Molts mòduls de Python 2 s’han eliminat de la distribució: paquets que només proporcionen mòduls importables de Python 2, si no són utilitzats per cap altre paquet (paquets fulla).

Tot i que aquest canvi no hauria d’afectar els usuaris habituals, afectarà els desenvolupadors que utilitzen mòduls Python empaquetats pel sistema.

Si esteu desenvolupant programari que necessita executar-se amb Python 2, us recomanem utilitzar un entorn virtual i instal·lar dependències des de l’índex de paquets Python (PyPI). Consulteu els detalls a: https://developer.fedoraproject.org/tech/languages/python/python-installation.html

També recomanem utilitzar un entorn virtual (venv) per a Python 3, si el vostre programari s’adreça a l’ecosistema Python més ampli en lloc de Fedora específicament. L’ús de venv desacoblarà el vostre entorn de desenvolupament del sistema.

Si esteu desenvolupant per a un paquet Fedora, porteu-lo a Python 3 tan aviat com sigui possible. S’ha previst l’eliminació gairebé completa de Python 2 per a la propera versió.

Dependències generades automàticament per a paquets Python

El generador que genera Provides i Requires per a paquets RPM de Python basats en el fitxer setup.py s’ha habilitat per defecte. Això fa que l’empaquetament de paquets Python sigui més fàcil i automàtic reutilitzant la informació proporcionada pel projecte upstream, i hauria de resultar en menys dependències innecessàries o mancants als RPMs.

Python progressbar substituït per progressbar2

El paquet progressbar s’ha actualitzat per utilitzar la bifurcació progressbar2, que és més nova i està millor mantinguda.

Les extensions de Nautilus ara utilitzen Python 3

Com a part del pas general a Python 3, les extensions per al navegador de fitxers i l’intèrpret d’ordres gràfic Nautilus s’executen ara utilitzant Python 3, i les extensions compatibles només amb Python 2 ja no són compatibles. Les extensions empaquetades a la distribució s’han actualitzat per a la compatibilitat amb Python 3. Els usuaris que hagin instal·lat les seves pròpies extensions haurien de comprovar que siguin compatibles amb Python 3 o eliminar-les.

Eviteu les banderes de compilació específiques de Fedora en extensions Python no RPM

Quan es construeixen mòduls d’extensió, el mòdul distutils proporciona un conjunt de banderes de compilació i enllaç per assegurar que els mòduls es compilin d’una manera compatible amb el propi executable Python. Quan es construeixen mòduls a Fedora, s’utilitzava el mateix conjunt de banderes per als mòduls que formen part de la distribució (és a dir, part d’un paquet RPM) i per als mòduls compilats pels usuaris utilitzant Fedora. Aquestes banderes incloïen connectors GCC personalitzats i opcions d’enllaç addicionals per "endurir" el codi i afegir anotacions annobin, la qual cosa és apropiada per a la distribució, però inesperada i innecessària per al codi d’usuari. Ara es proporciona un conjunt diferent i més petit de banderes per als mòduls d’extensió compilats pels usuaris.

Les banderes de compilació (CFLAGS, CXXFLAGS i LDFLAGS) desades al mòdul distutils de Python per construir mòduls d’extensió es canvien de:

  • %{build_cflags},

  • %{build_cxxflags} i

  • %{build_ldflags}

a

  • %{extension_cflags},

  • %{extension_cxxflags} i

  • %{extension_ldflags}.

Això significa actualment que no s’activen connectors GCC (com annobin) i no s’utilitzen fitxers d’especificacions GCC (arguments -specs=) per defecte quan es construeixen mòduls d’extensió Python (p. ex. amb python3 setup.py build).

El paquet python3-devel perdrà la seva dependència d’execució de redhat-rpm-config (que només era necessària per al suport d’annobin i fitxers d’especificacions GCC).

El canvi afecta la construcció de mòduls d’extensió per part dels usuaris, fora de l’entorn RPM. La biblioteca estàndard de Python i els paquets RPM de Python 3 de Fedora encara es construeixen amb el conjunt "tradicional" de banderes (%{build_cflags} etc.), tret que el paquet utilitzi mètodes no estàndard per construir les extensions.

Només es canviaran Python 3.7 i 3.6.

Per obtenir informació detallada sobre aquest canvi, inclosa la justificació i l’impacte en els desenvolupadors i paquets de Python, consulteu la pàgina de Canvis a la Wiki.