ルール
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
は実行可能な Python プログラムです。.py
ソースファイル(他の py_library
ルールに属する場合もあります)、実行時にプログラムが必要とするすべてのコードとデータを含む *.runfiles
ディレクトリ ツリー、正しい初期環境とデータを使用してプログラムを起動するスタブ スクリプトで構成されます。
例
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
を実行する場合(たとえば、Python バイナリを実行して java_test 内からモックリソースを設定する場合)、正しいアプローチは、他のバイナリまたはテストをデータ セクションの 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 属性を使用します。使用できる値は この属性の値に対して現在の Python バージョンを実際に検証するのは、実行可能なルール( どの依存関係がバージョン要件を引き起こすかに関する診断情報を取得するには、ターゲットで bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoこれにより、サフィックス -pyversioninfo.txt が付いたファイルがビルドされ、ターゲットでいずれかの Python バージョンが必要な理由に関する情報が提供されます。これは、バージョンの競合が原因で指定したターゲットのビルドに失敗した場合でも機能します。
|
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 が付いたファイルがビルドされ、ターゲットでいずれかの Python バージョンが必要な理由に関する情報が提供されます。これは、バージョンの競合が原因で指定したターゲットのビルドに失敗した場合でも機能します。
|
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 属性を使用します。使用できる値は この属性の値に対して現在の Python バージョンを実際に検証するのは、実行可能なルール( どの依存関係がバージョン要件を引き起こすかに関する診断情報を取得するには、ターゲットで bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoこれにより、サフィックス -pyversioninfo.txt が付いたファイルがビルドされ、ターゲットでいずれかの Python バージョンが必要な理由に関する情報が提供されます。これは、バージョンの競合が原因で指定したターゲットのビルドに失敗した場合でも機能します。
|
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 スクリプトの先頭に付加される「Shebang」式。動機については、問題 8685 をご覧ください。 Windows には適用されません。 |