第6章 Python スクリプトでのインタープリターディレクティブの変更


Red Hat Enterprise Linux 10 では、実行可能な Python スクリプトは、少なくとも主要な Python バージョンを明示的に指定するインタープリターディレクティブ (別名 hashbangs または shebangs) を使用することが想定されます。以下に例を示します。

#!/usr/bin/python3
#!/usr/bin/python3.12
Copy to Clipboard Toggle word wrap

/usr/lib/rpm/redhat/brp-mangle-shebangs buildroot ポリシー BRP (buildroot policy) スクリプトは、RPM パッケージをビルドする際に自動的に実行され、実行可能なすべてのファイルでインタープリターディレクティブを修正しようとします。BRP スクリプトは、#!/usr/bin/python#!/usr/bin/env python などのあいまいなインタープリターディレクティブを持つ Python スクリプトを検出するとエラーを生成します。

RPM ビルド時のビルドエラーを防ぐために、Python スクリプト内のインタープリターディレクティブを変更できます。

前提条件

  • Python スクリプトのインタープリターディレクティブの一部でビルドエラーが発生する。

手順

  • シナリオに応じて、次のいずれかの手順を実行してインタープリターディレクティブを変更します。

    • spec ファイルの %prep セクションで次のマクロを使用します。

      %py3_shebang_fix <SCRIPTNAME> …​
      Copy to Clipboard Toggle word wrap

      SCRIPTNAME には、任意のファイル、ディレクトリー、またはファイルおよびディレクトリーのリストを指定できます。

      その結果、リストされたすべてのファイルと、リストされたディレクトリー内のすべての .py ファイルのインタープリターディレクティブが %{python3} を指すように変更されます。元のインタープリターディレクティブの既存のフラグは保持され、%{py3_shebang_flags} マクロで定義された追加のフラグが追加されます。spec ファイルの %{py3_shebang_flags} マクロを再定義すると、追加されるフラグを変更できます。

    • パッケージ化した Python スクリプトを、想定される形式に準拠するように変更します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat