Aturan
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
adalah program Python
yang dapat dieksekusi yang terdiri
dari kumpulan file sumber .py
(mungkin milik
ke aturan py_library
lainnya), *.runfiles
direktori yang berisi semua kode dan data yang dibutuhkan oleh
program saat runtime, dan skrip rintisan yang memulai program dengan
lingkungan dan data awal yang benar.
Contoh
py_binary( name = "foo", srcs = ["foo.py"], data = [":transform"], # a cc_binary which we invoke at run time deps = [ ":foolib", # a py_library ], )
Jika Anda ingin menjalankan py_binary
dari dalam biner lain atau
(misalnya, menjalankan biner python untuk menyiapkan beberapa resource tiruan dari
dalam java_test) maka pendekatan yang tepat adalah membuat biner lain atau
pengujian bergantung pada py_binary
di bagian datanya. Lainnya
maka biner dapat menemukan py_binary
relatif terhadap sumbernya
saat ini.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testlib"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. Jika main tidak ditentukan, namanya harus sama dengan
dari file sumber yang merupakan titik
masuk utama aplikasi,
tanpa ekstensi. Misalnya, jika titik entri Anda
main.py , maka nama Anda harus main .
|
deps
|
deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Ini umumnya
py_library aturan.
|
srcs
|
.py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check-in dan semua file sumber yang dihasilkan. Target library
termasuk dalam deps , sedangkan file biner lain yang diperlukan saat runtime termasuk dalam
data .
|
imports
|
PYTHONPATH .
Tunduk pada substitusi "Buat variabel". Impor ini
direktori akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan
aturan yang menjadi dependensi aturan ini. Setiap direktori akan ditambahkan ke
Jalur absolut (jalur yang diawali dengan |
legacy_create_init
|
--incompatible_default_to_explicit_init_py digunakan. Jika salah, pengguna
bertanggung jawab untuk membuat (mungkin kosong) file __init__.py dan menambahkannya ke
srcs target Python sesuai kebutuhan.
|
main
|
srcs . Jika tidak ditentukan,
name digunakan sebagai gantinya (lihat di atas). Jika name tidak
cocok dengan nama file apa pun dalam srcs , main harus ditentukan.
|
python_version
|
deps transitifnya) untuk Python 2 atau Python
3. Nilai yang valid adalah "PY2" dan "PY3" (default).
Versi Python selalu direset (mungkin secara default) ke versi apa pun yang ditentukan oleh atribut ini, terlepas dari versi yang ditentukan pada baris perintah atau dengan target lain yang lebih tinggi yang bergantung pada hal ini. Jika ingin melakukan Peringatan bug: Atribut ini menetapkan versi target Anda yang akan dibuat oleh Bazel.
tetapi karena #4815,
skrip potongan yang dihasilkan masih bisa memanggil versi penerjemah yang salah pada saat runtime. Lihat
ini
solusi, yang melibatkan penentuan target |
srcs_version
|
srcs target agar kompatibel dengan Python
2, Python 3, atau keduanya. Untuk menetapkan versi runtime Python, gunakan metode
Atribut python_version dari
aturan Python (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perlu diperhatikan bahwa hanya aturan yang dapat dieksekusi ( Untuk mendapatkan informasi diagnostik tentang
dependensi yang memperkenalkan persyaratan versi,
Anda dapat menjalankan aspek bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt yang memberikan informasi
tentang mengapa target Anda memerlukan satu versi Python atau yang lainnya. Perhatikan bahwa ini tetap akan berfungsi meskipun
target yang ditentukan gagal di-build karena adanya konflik versi.
|
stamp
|
Biner yang distempel tidak dibangun ulang kecuali jika dependensinya berubah. |
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)
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
deps
|
deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Ini umumnya
py_library aturan.
|
srcs
|
.py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check-in dan semua file sumber yang dihasilkan.
|
imports
|
PYTHONPATH .
Tunduk pada substitusi "Buat variabel". Impor ini
direktori akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan
aturan yang menjadi dependensi aturan ini. Setiap direktori akan ditambahkan ke
Jalur absolut (jalur yang diawali dengan |
srcs_version
|
srcs target agar kompatibel dengan Python
2, Python 3, atau keduanya. Untuk menetapkan versi runtime Python, gunakan metode
Atribut python_version dari
aturan Python (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perlu diperhatikan bahwa hanya aturan yang dapat dieksekusi ( Untuk mendapatkan informasi diagnostik tentang
dependensi yang memperkenalkan persyaratan versi,
Anda dapat menjalankan aspek bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt yang memberikan informasi
tentang mengapa target Anda memerlukan satu versi Python atau yang lainnya. Perhatikan bahwa ini tetap akan berfungsi meskipun
target yang ditentukan gagal di-build karena adanya konflik versi.
|
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)
Aturan py_test()
mengompilasi pengujian. Pengujian adalah wrapper biner
pada beberapa kode uji.
Contoh
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
Anda juga dapat menentukan modul utama:
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
deps
|
deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Ini umumnya
py_library aturan.
|
srcs
|
.py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check-in dan semua file sumber yang dihasilkan. Target library
termasuk dalam deps , sedangkan file biner lain yang diperlukan saat runtime termasuk dalam
data .
|
imports
|
PYTHONPATH .
Tunduk pada substitusi "Buat variabel". Impor ini
direktori akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan
aturan yang menjadi dependensi aturan ini. Setiap direktori akan ditambahkan ke
Jalur absolut (jalur yang diawali dengan |
legacy_create_init
|
--incompatible_default_to_explicit_init_py digunakan. Jika salah, pengguna
bertanggung jawab untuk membuat (mungkin kosong) file __init__.py dan menambahkannya ke
srcs target Python sesuai kebutuhan.
|
main
|
srcs . Jika tidak ditentukan,
name digunakan sebagai gantinya (lihat di atas). Jika name tidak
cocok dengan nama file apa pun dalam srcs , main harus ditentukan.
|
python_version
|
deps transitifnya) untuk Python 2 atau Python
3. Nilai yang valid adalah "PY2" dan "PY3" (default).
Versi Python selalu direset (mungkin secara default) ke versi apa pun yang ditentukan oleh atribut ini, terlepas dari versi yang ditentukan pada baris perintah atau dengan target lain yang lebih tinggi yang bergantung pada hal ini. Jika ingin melakukan Peringatan bug: Atribut ini menetapkan versi target Anda yang akan dibuat oleh Bazel.
tetapi karena #4815,
skrip potongan yang dihasilkan masih bisa memanggil versi penerjemah yang salah pada saat runtime. Lihat
ini
solusi, yang melibatkan penentuan target |
srcs_version
|
srcs target agar kompatibel dengan Python
2, Python 3, atau keduanya. Untuk menetapkan versi runtime Python, gunakan metode
Atribut python_version dari
aturan Python (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perlu diperhatikan bahwa hanya aturan yang dapat dieksekusi ( Untuk mendapatkan informasi diagnostik tentang
dependensi yang memperkenalkan persyaratan versi,
Anda dapat menjalankan aspek bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt yang memberikan informasi
tentang mengapa target Anda memerlukan satu versi Python atau yang lainnya. Perhatikan bahwa ini tetap akan berfungsi meskipun
target yang ditentukan gagal di-build karena adanya konflik versi.
|
stamp
|
|
py_runtime
py_runtime(name, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
Mewakili runtime Python yang digunakan untuk mengeksekusi kode Python.
Target py_runtime
dapat mewakili runtime platform atau
runtime in-build. Runtime platform mengakses penafsir yang diinstal sistem pada
sedangkan runtime dalam build menunjuk ke target yang dapat dieksekusi yang bertindak sebagai penafsir. Di beberapa
kedua kasus tersebut, seorang "penafsir" berarti setiap skrip biner
atau wrapper yang dapat dieksekusi yang mampu
menjalankan skrip Python yang diteruskan pada baris perintah, mengikuti konvensi yang sama dengan
Penerjemah CPython.
Runtime platform pada dasarnya bersifat non-hermetik. Menerapkan persyaratan pada platform target memiliki penerjemah yang terletak di jalur tertentu. Runtime in-build mungkin bersifat hermetik atau tidak, tergantung pada apakah skrip itu menunjuk ke {i>check-in interpreter<i} atau skrip wrapper yang mengakses penerjemah sistem.
Contoh:
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", )
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
coverage_tool
|
py_binary
dan py_test target.
Jika ditetapkan, target harus menghasilkan satu file atau menjadi target yang dapat dieksekusi. Jalur ke file tunggal, atau {i>executable<i} jika target dapat dieksekusi, menentukan titik entri untuk alat cakupan python. Target dan runfiles akan ditambahkan ke runfile saat cakupan diaktifkan. Titik entri untuk alat harus dapat dimuat oleh penafsir python (mis.
File |
files
|
|
interpreter
|
|
interpreter_path
|
|
python_version
|
"PY2"
dan "PY3" .
Nilai default dikontrol oleh tanda |
stub_shebang
|
py_binary target.
Lihat masalah 8685 untuk motivasi. Tidak berlaku untuk Windows. |