ルール
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たとえば、エントリ ポイントが
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)をビルドするかどうか。有効な値は "PY2" と "PY3"(デフォルト)です。
Python のバージョンは常に(デフォルトで)この属性で指定されたバージョンにリセットされます。これは、コマンドラインで指定されたバージョンや、このターゲットに依存する他の上位ターゲットで指定されたバージョンに関係ありません。 現在の Python バージョンで バグに関する警告: この属性は、Bazel がターゲットをビルドするバージョンを設定しますが、
#4815 により、
結果のスタブ スクリプトが実行時に誤ったインタープリタ バージョンを呼び出す可能性があります。この回避策をご覧ください。この回避策では、必要に応じて Python バージョンを指す |
srcs_version
|
文字列。デフォルトは srcs が Python
2、Python 3、またはその両方と互換性があることを宣言します。Python ランタイム バージョンを実際に設定するには、実行可能な Python ルール(py_binary または py_test)の
python_version 属性を使用します。使用できる値は、 現在の Python バージョンがこの属性の値と照合して実際に検証されるのは、実行可能ルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、
ターゲットで
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 属性を使用します。使用できる値は、 現在の Python バージョンがこの属性の値と照合して実際に検証されるのは、実行可能ルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、
ターゲットで
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)をビルドするかどうか。有効な値は "PY2" と "PY3"(デフォルト)です。
Python のバージョンは常に(デフォルトで)この属性で指定されたバージョンにリセットされます。これは、コマンドラインで指定されたバージョンや、このターゲットに依存する他の上位ターゲットで指定されたバージョンに関係ありません。 現在の Python バージョンで バグに関する警告: この属性は、Bazel がターゲットをビルドするバージョンを設定しますが、
#4815 により、
結果のスタブ スクリプトが実行時に誤ったインタープリタ バージョンを呼び出す可能性があります。この回避策をご覧ください。この回避策では、必要に応じて Python バージョンを指す |
srcs_version
|
文字列。デフォルトは srcs が Python
2、Python 3、またはその両方と互換性があることを宣言します。Python ランタイム バージョンを実際に設定するには、実行可能な Python ルール(py_binary または py_test)の
python_version 属性を使用します。使用できる値は、 現在の Python バージョンがこの属性の値と照合して実際に検証されるのは、実行可能ルール( どの依存関係がバージョンの要件を導入しているかに関する診断情報を取得するには、
ターゲットで
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 カバレッジ ツールのエントリ ポイントを決定します。カバレッジが有効になっている場合、ターゲットとその runfiles が runfiles に追加されます。 ツールのエントリ ポイントは、Python インタープリタ(
|
files
|
ラベルのリスト。デフォルトは |
interpreter
|
ラベル。デフォルトは |
interpreter_path
|
文字列。デフォルトは |
python_version
|
文字列。デフォルトは "PY2"
および "PY3" です。
デフォルト値は |
stub_shebang
|
文字列。デフォルトは py_binary` ターゲットの実行時に使用されるブートストラップ Python スクリプトの先頭に付加される「Shebang」式。動機については、問題 8685 をご覧ください。 Windows には適用されません。 |