規則
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 可執行的 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 的匯入目錄清單。
套用至「Make 變數」替代。這些匯入作業
此規則及其依附的所有規則都會新增目錄 (注意:
需優先遵守這項規則系統會將各個目錄加入
絕對路徑 (開頭為 |
legacy_create_init
|
整數;預設值為 --incompatible_default_to_explicit_init_py 。如果為 False,使用者會
負責建立 (可能為空的) __init__.py 檔案,並將檔案
Python 目標的 srcs (這是必要步驟)。
|
main
|
標籤;預設為 srcs 」中。如果沒有指定
系統會改用 name (請見上方說明)。如果 name 不是
與 srcs 中的任何檔案名稱相符,則必須指定 main 。
|
python_version
|
String;不可設定;預設為 deps )
3.有效值為 "PY2" 和 "PY3" (預設值)。
Python 版本一律會重設 (可能根據預設) 為 無論指令列上指定的版本為何, 其他較高的目標。 如果您要在目前的 Python 版本上執行 錯誤警告:這項屬性會設定 Bazel 建構目標的版本。
但因為 #4815,
產生的虛設常式指令碼可能仍會在執行階段叫用錯誤的翻譯版本。詳情請見
本
解決方法,其中需要定義指向的 |
srcs_version
|
String;預設值為 srcs ,與任一 Python 相容
2 和/或 Python 3。如要實際設定 Python 執行階段版本,請使用
python_version 屬性
可執行的 Python 規則 (py_binary 或 py_test )。
允許的值包括: 請注意,只有執行檔規則 ( 如要取得診斷資訊,瞭解哪些依附元件造成版本需求,
您可以對目標執行 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 的檔案,用於提供資訊
您的目標為何需要一個 Python 版本。請注意,即使
版本衝突,因此無法建構指定的目標。
|
stamp
|
整數;預設值為
除非其依附元件變更,否則系統「不會」重新建構加上時間戳記的二進位檔。 |
py_library
查看規則來源py_library(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
引數
屬性 | |
---|---|
name |
名稱;必選 此目標的專屬名稱。 |
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 的匯入目錄清單。
套用至「Make 變數」替代。這些匯入作業
此規則及其依附的所有規則都會新增目錄 (注意:
需優先遵守這項規則系統會將各個目錄加入
絕對路徑 (開頭為 |
legacy_create_init
|
整數;預設值為 --incompatible_default_to_explicit_init_py 。如果為 False,使用者會
負責建立 (可能為空的) __init__.py 檔案,並將檔案
Python 目標的 srcs (這是必要步驟)。
|
main
|
標籤;預設為 srcs 」中。如果沒有指定
系統會改用 name (請見上方說明)。如果 name 不是
與 srcs 中的任何檔案名稱相符,則必須指定 main 。
|
python_version
|
String;不可設定;預設為 deps )
3.有效值為 "PY2" 和 "PY3" (預設值)。
Python 版本一律會重設 (可能根據預設) 為 無論指令列上指定的版本為何, 其他較高的目標。 如果您要在目前的 Python 版本上執行 錯誤警告:這項屬性會設定 Bazel 建構目標的版本。
但因為 #4815,
產生的虛設常式指令碼可能仍會在執行階段叫用錯誤的翻譯版本。詳情請見
本
解決方法,其中需要定義指向的 |
srcs_version
|
String;預設值為 srcs ,與任一 Python 相容
2 和/或 Python 3。如要實際設定 Python 執行階段版本,請使用
python_version 屬性
可執行的 Python 規則 (py_binary 或 py_test )。
允許的值包括: 請注意,只有執行檔規則 ( 如要取得診斷資訊,瞭解哪些依附元件造成版本需求,
您可以對目標執行 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
目標可代表平台執行階段或
in-build 執行階段中。平台執行階段存取系統安裝的解譯器。
路徑,而建構中的執行階段會指向做為解譯器的可執行目標。於
兩種情況皆稱為「解譯器」意即任何可執行
依照與標準指令碼相同的慣例,執行透過指令列傳遞的 Python 指令碼
CPython 解譯器。
平台執行階段的本質是非密封的。必須對目標平台施加要求 才能訓練特定路徑就建構中的執行階段不一定重要 具體取決於它指向已簽入的解譯器,或是存取 系統解譯器
範例:
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 涵蓋率工具的進入點。目標及其 啟用涵蓋率功能之後,系統就會將 runfile 加入至執行檔案。 工具的進入點必須可透過 Python 解譯器載入 (例如
|
files
|
標籤清單;預設為 |
interpreter
|
標籤;預設為 |
interpreter_path
|
String;預設值為 |
python_version
|
String;預設值為 "PY2"
和 "PY3" 。
預設值是由 |
stub_shebang
|
String;預設值為 py_binary 目標時使用。
請參閱問題 8685, 動力。 不適用於 Windows。 |