ルール
py_binary
ルールソースを表示py_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, imports, legacy_create_init, licenses, main, output_licenses, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
  py_binary は、.py ソースファイル(他の py_library ルールに属している可能性あり)のコレクション、プログラムの実行時に必要なすべてのコードとデータを含む *.runfiles ディレクトリ ツリー、正しい初期環境とデータでプログラムを起動するスタブ スクリプトで構成される実行可能な Python プログラムです。
例
py_binary(
    name = "foo",
    srcs = ["foo.py"],
    data = [":transform"],  # a cc_binary which we invoke at run time
    deps = [
        ":foolib",  # a py_library
    ],
)
別のバイナリまたはテスト内から py_binary を実行する場合(たとえば、java_test 内から python バイナリを実行してモックリソースを設定する場合)、正しい方法は、別のバイナリまたはテストのデータ セクションで py_binary に依存させることです。他のバイナリは、ソース ディレクトリからの相対パスで py_binary を見つけることができます。
py_binary(
    name = "test_main",
    srcs = ["test_main.py"],
    deps = [":testing"],
)
java_library(
    name = "testing",
    srcs = glob(["*.java"]),
    data = [":test_main"]
)
引数
| 属性 | |
|---|---|
| name | 名前(必須) このターゲットの一意の名前。 mainが指定されていない場合、これはアプリケーションのメイン エントリ ポイントであるソースファイルの名前(拡張子を除く)と同じである必要があります。たとえば、エントリ ポイントがmain.pyの場合、名前はmainになります。 | 
| deps | ラベルのリスト。デフォルトは  depsに関する一般的なコメントについては、
          ほとんどのビルドルールで定義される一般的な属性をご覧ください。通常、これらはpy_libraryルールです。 | 
| srcs | ラベルのリスト。必須ターゲットの作成のために処理されるソース( .py)ファイルのリスト。これには、チェックインされたすべてのコードと、生成されたすべてのソースファイルが含まれます。ライブラリ ターゲットはdepsに、実行時に必要な他のバイナリ ファイルはdataに配置します。 | 
| imports | 文字列のリスト。デフォルトは  PYTHONPATHに追加するインポート ディレクトリのリスト。
          「変数を作成」の置換の対象となります。これらのインポート ディレクトリは、このルールとそれに依存するすべてのルールに追加されます(注: このルールが依存するルールではありません)。各ディレクトリは、このルールに依存する  
          絶対パス( | 
| legacy_create_init | 整数。デフォルトは  --incompatible_default_to_explicit_init_pyが使用されている場合を除き、true を意味します。false の場合、ユーザーは(空の可能性のある)__init__.py ファイルを作成し、必要に応じて Python ターゲットのsrcsに追加する必要があります。 | 
| main | ラベル。デフォルトは  srcsにもリストされている必要があります。指定しない場合は、代わりにnameが使用されます(上記を参照)。nameがsrcsのファイル名と一致しない場合は、mainを指定する必要があります。 | 
| python_version | 文字列。構成不可。デフォルトは  deps)を Python 2 または Python 3 用にビルドするかどうか。有効な値は"PY2"と"PY3"(デフォルト)です。Python のバージョンは、コマンドラインで指定されたバージョンや、このターゲットに依存する他の上位ターゲットで指定されたバージョンに関係なく、この属性で指定されたバージョンに常に(デフォルトで)リセットされます。 現在の Python バージョンで  バグに関する警告: この属性は、Bazel がターゲットをビルドするバージョンを設定しますが、#4815 により、生成されたスタブ スクリプトが実行時に誤ったインタープリタ バージョンを呼び出す可能性があります。この回避策をご覧ください。この回避策では、必要に応じて Python バージョンを指す  | 
| srcs_version | 文字列。デフォルトは  srcsが Python 2、Python 3、またはその両方と互換性があることを宣言します。Python ランタイム バージョンを実際に設定するには、実行可能な Python ルール(py_binaryまたはpy_test)のpython_version属性を使用します。使用できる値は、 実行可能なルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、ターゲットで  
          bazel build <your target> \
              --aspects=@rules_python//python:defs.bzl%find_requirements \
              --output_groups=pyversioninfo
          -pyversioninfo.txtという接尾辞の付いたファイルがビルドされます。指定されたターゲットがバージョンの競合によりビルドに失敗した場合でも、このコマンドは機能します。 | 
| stamp | 整数。デフォルトは  
 依存関係が変更されない限り、スタンプ付きバイナリは再構築されません。 | 
py_library
ルールソースを表示py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, restricted_to, srcs_version, tags, target_compatible_with, testonly, visibility)
引数
| 属性 | |
|---|---|
| name | 名前(必須) このターゲットの一意の名前。 | 
| deps | ラベルのリスト。デフォルトは  depsに関する一般的なコメントについては、
          ほとんどのビルドルールで定義される一般的な属性をご覧ください。通常、これらはpy_libraryルールです。 | 
| srcs | ラベルのリスト。デフォルトは  .py)ファイルのリスト。これには、チェックインされたすべてのコードと、生成されたすべてのソースファイルが含まれます。 | 
| imports | 文字列のリスト。デフォルトは  PYTHONPATHに追加するインポート ディレクトリのリスト。
          「変数を作成」の置換の対象となります。これらのインポート ディレクトリは、このルールとそれに依存するすべてのルールに追加されます(注: このルールが依存するルールではありません)。各ディレクトリは、このルールに依存する  
          絶対パス( | 
| srcs_version | 文字列。デフォルトは  srcsが Python 2、Python 3、またはその両方と互換性があることを宣言します。Python ランタイム バージョンを実際に設定するには、実行可能な Python ルール(py_binaryまたはpy_test)のpython_version属性を使用します。使用できる値は、 実行可能なルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、ターゲットで  
          bazel build <your target> \
              --aspects=@rules_python//python:defs.bzl%find_requirements \
              --output_groups=pyversioninfo
          -pyversioninfo.txtという接尾辞の付いたファイルがビルドされます。指定されたターゲットがバージョンの競合によりビルドに失敗した場合でも、このコマンドは機能します。 | 
py_test
ルールソースを表示py_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, imports, legacy_create_init, licenses, local, main, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
py_test() ルールはテストをコンパイルします。テストは、テストコードのバイナリ ラッパーです。
例
py_test(
    name = "runtest_test",
    srcs = ["runtest_test.py"],
    deps = [
        "//path/to/a/py/library",
    ],
)
メイン モジュールを指定することもできます。
py_test(
    name = "runtest_test",
    srcs = [
        "runtest_main.py",
        "runtest_lib.py",
    ],
    main = "runtest_main.py",
)
引数
| 属性 | |
|---|---|
| name | 名前(必須) このターゲットの一意の名前。 | 
| deps | ラベルのリスト。デフォルトは  depsに関する一般的なコメントについては、
          ほとんどのビルドルールで定義される一般的な属性をご覧ください。通常、これらはpy_libraryルールです。 | 
| srcs | ラベルのリスト。必須ターゲットの作成のために処理されるソース( .py)ファイルのリスト。これには、チェックインされたすべてのコードと、生成されたすべてのソースファイルが含まれます。ライブラリ ターゲットはdepsに、実行時に必要な他のバイナリ ファイルはdataに配置します。 | 
| imports | 文字列のリスト。デフォルトは  PYTHONPATHに追加するインポート ディレクトリのリスト。
          「変数を作成」の置換の対象となります。これらのインポート ディレクトリは、このルールとそれに依存するすべてのルールに追加されます(注: このルールが依存するルールではありません)。各ディレクトリは、このルールに依存する  
          絶対パス( | 
| legacy_create_init | 整数。デフォルトは  --incompatible_default_to_explicit_init_pyが使用されている場合を除き、true を意味します。false の場合、ユーザーは(空の可能性のある)__init__.py ファイルを作成し、必要に応じて Python ターゲットのsrcsに追加する必要があります。 | 
| main | ラベル。デフォルトは  srcsにもリストされている必要があります。指定しない場合は、代わりにnameが使用されます(上記を参照)。nameがsrcsのファイル名と一致しない場合は、mainを指定する必要があります。 | 
| python_version | 文字列。構成不可。デフォルトは  deps)を Python 2 または Python 3 用にビルドするかどうか。有効な値は"PY2"と"PY3"(デフォルト)です。Python のバージョンは、コマンドラインで指定されたバージョンや、このターゲットに依存する他の上位ターゲットで指定されたバージョンに関係なく、この属性で指定されたバージョンに常に(デフォルトで)リセットされます。 現在の Python バージョンで  バグに関する警告: この属性は、Bazel がターゲットをビルドするバージョンを設定しますが、#4815 により、生成されたスタブ スクリプトが実行時に誤ったインタープリタ バージョンを呼び出す可能性があります。この回避策をご覧ください。この回避策では、必要に応じて Python バージョンを指す  | 
| srcs_version | 文字列。デフォルトは  srcsが Python 2、Python 3、またはその両方と互換性があることを宣言します。Python ランタイム バージョンを実際に設定するには、実行可能な Python ルール(py_binaryまたはpy_test)のpython_version属性を使用します。使用できる値は、 実行可能なルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、ターゲットで  
          bazel build <your target> \
              --aspects=@rules_python//python:defs.bzl%find_requirements \
              --output_groups=pyversioninfo
          -pyversioninfo.txtという接尾辞の付いたファイルがビルドされます。指定されたターゲットがバージョンの競合によりビルドに失敗した場合でも、このコマンドは機能します。 | 
| stamp | 整数。デフォルトは  | 
py_runtime
ルールソースを表示py_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
Python コードの実行に使用される Python ランタイムを表します。
py_runtime ターゲットは、プラットフォーム ランタイムまたはビルド内ランタイムのいずれかを表すことができます。プラットフォーム ランタイムは既知のパスにあるシステム インストール済みインタープリタにアクセスしますが、ビルド内ランタイムはインタープリタとして機能する実行可能ターゲットを指します。どちらの場合も、「インタープリタ」とは、標準の CPython インタープリタと同じ規則に従って、コマンドラインで渡された Python スクリプトを実行できる実行可能バイナリまたはラッパー スクリプトを意味します。
プラットフォーム ランタイムは、その性質上、非密閉型です。ターゲット プラットフォームに、特定のパスにインタープリタを配置するという要件を課します。ビルド内のランタイムは、チェックインされたインタープリタまたはシステム インタープリタにアクセスするラッパー スクリプトを指しているかどうかによって、密閉型になる場合とならない場合があります。
例:
py_runtime(
    name = "python-2.7.12",
    files = glob(["python-2.7.12/**"]),
    interpreter = "python-2.7.12/bin/python",
)
py_runtime(
    name = "python-3.6.0",
    interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python",
)
引数
| 属性 | |
|---|---|
| name | 名前(必須) このターゲットの一意の名前。 | 
| bootstrap_template | ラベル。デフォルトは  | 
| coverage_tool | ラベル。デフォルトは  py_binaryターゲットとpy_testターゲットからコード カバレッジ情報を収集するために使用するターゲットです。設定されている場合、ターゲットは単一のファイルを生成するか、実行可能ターゲットである必要があります。単一のファイルへのパス、またはターゲットが実行可能ファイルの場合は実行可能ファイルへのパスによって、Python カバレッジ ツールのエントリ ポイントが決まります。カバレッジが有効になっている場合、ターゲットとそのランファイルはランファイルに追加されます。 ツールのエントリ ポイントは、Python インタープリタ( | 
| files | ラベルのリスト。デフォルトは  | 
| interpreter | ラベル。デフォルトは  | 
| interpreter_path | 文字列。デフォルトは  | 
| python_version | 文字列。デフォルトは  "PY2"と"PY3"です。デフォルト値は  | 
| stub_shebang | 文字列。デフォルトは  py_binaryターゲットの実行時に使用されるブートストラップ Python スクリプトの先頭に付加される「シバン」式。動機については、問題 8685 をご覧ください。 Windows には適用されません。 |