Rechercher

4.6. Gestion des directives de l'interpréteur dans les scripts Python

download PDF

Dans Red Hat Enterprise Linux 9, les scripts Python exécutables sont censés utiliser des directives d'interpréteur (également connues sous le nom de hashbangs ou shebangs) qui spécifient explicitement au minimum la version majeure de Python. Par exemple :

#!/usr/bin/python3
#!/usr/bin/python3.9
#!/usr/bin/python3.11

Le script /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot policy (BRP) est exécuté automatiquement lors de la construction de tout paquetage RPM et tente de corriger les directives de l'interpréteur dans tous les fichiers exécutables.

Le script BRP génère des erreurs lorsqu'il rencontre un script Python avec une directive d'interprétation ambiguë, telle que :

#!/usr/bin/python

ou

#!/usr/bin/env python

4.6.1. Modifier les directives de l'interpréteur dans les scripts Python

Utilisez la procédure suivante pour modifier les directives de l'interpréteur dans les scripts Python qui provoquent des erreurs de compilation au moment de la compilation du RPM.

Conditions préalables

  • Certaines directives de l'interpréteur dans vos scripts Python provoquent une erreur de compilation.

Procédure

  • Pour modifier les directives de l'interpréteur, effectuez l'une des tâches suivantes :

    • Utilisez la macro suivante dans la section %prep de votre fichier SPEC :

      # %py3_shebang_fix SCRIPTNAME..

      SCRIPTNAME peut être un fichier, un répertoire ou une liste de fichiers et de répertoires.

      En conséquence, tous les fichiers listés et tous les fichiers .py dans les répertoires listés verront leurs directives d'interprétation modifiées pour pointer vers %{python3}. Les drapeaux existants de la directive d'interprétation originale seront préservés et des drapeaux supplémentaires définis dans la macro %{py3_shebang_flags} seront ajoutés. Vous pouvez redéfinir la macro %{py3_shebang_flags} dans votre fichier SPEC pour modifier les drapeaux qui seront ajoutés.

    • Appliquer le script pathfix.py du paquet python3-devel:

      # pathfix.py -pn -i %{python3} PATH ..

      Vous pouvez spécifier plusieurs chemins. Si un PATH est un répertoire, pathfix.py recherche de manière récursive tous les scripts Python correspondant au modèle ^[a-zA-Z0-9_] \.py$, et pas seulement ceux dont la directive d'interprétation est ambiguë. Ajoutez la commande ci-dessus à la section %prep ou à la fin de la section %install.

    • Modifiez les scripts Python fournis afin qu'ils soient conformes au format attendu. À cette fin, vous pouvez également utiliser le script pathfix.py en dehors du processus de compilation du RPM. Lorsque vous exécutez pathfix.py en dehors d'une compilation RPM, remplacez %{python3} de l'exemple précédent par un chemin d'accès à la directive de l'interpréteur, tel que /usr/bin/python3 ou /usr/bin/python3.11.

Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.