Aturan
py_binary
Lihat sumber aturanpy_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 aturan py_library
lainnya), hierarki direktori *.runfiles
yang berisi semua kode dan data yang diperlukan oleh program pada waktu proses, dan skrip stub 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 atau pengujian lain (misalnya, menjalankan biner python untuk menyiapkan beberapa resource tiruan dari dalam java_test), pendekatan yang tepat adalah membuat biner atau pengujian lain bergantung pada py_binary
di bagian datanya. Biner lainnya kemudian dapat menemukan py_binary
relatif terhadap direktori sumber.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testing"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
Argumen
Atribut | |
---|---|
name |
Nama; wajib Nama unik untuk target ini. Jika main tidak ditentukan, nama ini harus sama dengan nama
file sumber yang merupakan titik entri utama aplikasi,
tanpa ekstensi. Misalnya, jika titik entri Anda disebut
main.py , nama Anda harus main .
|
deps
|
Daftar label; default-nya adalah deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Aturan ini umumnya
py_library .
|
srcs
|
Daftar label; wajib diisi Daftar file sumber (.py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check in dan file sumber yang dihasilkan. Target library
berada di deps , sedangkan file biner lain yang diperlukan saat runtime berada di
data .
|
imports
|
Daftar string; default-nya adalah PYTHONPATH .
Tunduk pada substitusi "Buat variabel". Direktori impor ini 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 dimulai dengan |
legacy_create_init
|
Bilangan bulat; defaultnya adalah --incompatible_default_to_explicit_init_py digunakan. Jika salah, pengguna
bertanggung jawab untuk membuat file __init__.py (mungkin kosong) dan menambahkannya ke
srcs target Python sesuai kebutuhan.
|
main
|
Label; default-nya adalah srcs . Jika tidak ditentukan,
name akan digunakan (lihat di atas). Jika name tidak
cocok dengan nama file apa pun di srcs , main harus ditentukan.
|
python_version
|
String; tidak dapat dikonfigurasi; default-nya adalah 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 di command line atau oleh target lain yang lebih tinggi yang bergantung pada versi ini. Jika ingin melakukan Peringatan bug: Atribut ini menetapkan versi penafsiran yang ditetapkan oleh Bazel,
tetapi karena #4815, skrip
stub yang dihasilkan mungkin masih memanggil versi penafsir yang salah pada runtime. Lihat
solusi
ini, yang melibatkan penentuan target |
srcs_version
|
String; default-nya adalah srcs target agar kompatibel dengan Python 2, Python 3, atau keduanya. Untuk benar-benar menetapkan versi runtime Python, gunakan atribut python_version dari aturan Python yang dapat dieksekusi (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perhatikan 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=pyversioninfoTindakan ini akan mem-build file dengan akhiran -pyversioninfo.txt yang memberikan informasi
tentang alasan target Anda memerlukan satu versi Python atau versi lainnya. Perhatikan bahwa hal ini berfungsi meskipun
target yang diberikan gagal di-build karena konflik versi.
|
stamp
|
Bilangan bulat; defaultnya adalah
Biner yang distempel tidak dibangun ulang kecuali jika dependensinya berubah. |
py_library
Lihat sumber aturanpy_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; wajib Nama unik untuk target ini. |
deps
|
Daftar label; default-nya adalah deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Ini umumnya adalah aturan
py_library .
|
srcs
|
Daftar label; defaultnya adalah .py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check-in dan semua file sumber yang dihasilkan.
|
imports
|
Daftar string; defaultnya adalah PYTHONPATH .
Tunduk pada penggantian "Buat variabel". Direktori impor ini 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 dimulai dengan |
srcs_version
|
String; default-nya adalah srcs target agar kompatibel dengan Python
2, Python 3, atau keduanya. Untuk benar-benar menetapkan versi runtime Python, gunakan atribut python_version dari aturan Python yang dapat dieksekusi (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perhatikan 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=pyversioninfoTindakan ini akan mem-build file dengan akhiran -pyversioninfo.txt yang memberikan informasi
tentang alasan target Anda memerlukan satu versi Python atau versi lainnya. Perhatikan bahwa hal ini berfungsi meskipun
target yang diberikan gagal di-build karena konflik versi.
|
py_test
Lihat sumber aturanpy_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 untuk beberapa kode pengujian.
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; wajib Nama unik untuk target ini. |
deps
|
Daftar label; defaultnya adalah deps di
Atribut umum yang ditentukan oleh sebagian besar aturan build.
Ini umumnya adalah aturan
py_library .
|
srcs
|
Daftar label; wajib diisi Daftar file sumber (.py ) yang diproses untuk membuat target.
Ini mencakup semua kode yang Anda check in dan file sumber yang dihasilkan. Target library
berada di deps , sedangkan file biner lain yang diperlukan saat runtime berada di
data .
|
imports
|
Daftar string; default-nya adalah PYTHONPATH .
Tunduk pada penggantian "Buat variabel". Direktori impor ini 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
|
Bilangan bulat; defaultnya adalah --incompatible_default_to_explicit_init_py digunakan. Jika salah, pengguna bertanggung jawab untuk membuat file __init__.py (mungkin kosong) dan menambahkannya ke srcs target Python sesuai kebutuhan.
|
main
|
Label; default-nya adalah srcs . Jika tidak ditentukan,
name akan digunakan (lihat di atas). Jika name tidak
cocok dengan nama file apa pun di srcs , main harus ditentukan.
|
python_version
|
String; tidak dapat dikonfigurasi; default-nya adalah 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 di command line atau oleh target lain yang lebih tinggi yang bergantung pada versi ini. Jika ingin Peringatan bug: Atribut ini menetapkan versi yang digunakan Bazel untuk mem-build target Anda,
tetapi karena #4815,
skrip stub yang dihasilkan mungkin masih memanggil versi penafsir yang salah saat runtime. Lihat
solusi
ini, yang melibatkan penentuan target |
srcs_version
|
String; defaultnya adalah srcs target agar kompatibel dengan Python
2, Python 3, atau keduanya. Untuk benar-benar menetapkan versi runtime Python, gunakan atribut python_version dari aturan Python yang dapat dieksekusi (py_binary atau py_test ).
Nilai yang diizinkan adalah: Perhatikan 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=pyversioninfoTindakan ini akan mem-build file dengan akhiran -pyversioninfo.txt yang memberikan informasi
tentang alasan target Anda memerlukan satu versi Python atau versi lainnya. Perhatikan bahwa metode ini tetap berfungsi meskipun target yang ditentukan gagal di-build karena konflik versi.
|
stamp
|
Bilangan bulat; default-nya adalah |
py_runtime
Lihat sumber aturanpy_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)
Merepresentasikan runtime Python yang digunakan untuk menjalankan kode Python.
Target py_runtime
dapat merepresentasikan runtime platform atau
runtime bawaan. Runtime platform mengakses penafsir yang diinstal sistem pada jalur
yang diketahui, sedangkan runtime dalam build menunjuk ke target yang dapat dieksekusi yang bertindak sebagai penafsir. Dalam
kedua kasus, "penafsir" berarti skrip biner atau wrapper yang dapat dieksekusi yang mampu
menjalankan skrip Python yang diteruskan pada command line, mengikuti konvensi yang sama dengan penafsir
CPython standar.
Runtime platform pada dasarnya bersifat non-hermetis. Hal ini akan mewajibkan platform target untuk memiliki penafsir yang terletak di jalur tertentu. Runtime bawaan mungkin bersifat hermetis atau tidak, bergantung pada apakah runtime tersebut mengarah ke penafsir yang diperiksa atau skrip wrapper yang mengakses penafsir 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; wajib Nama unik untuk target ini. |
bootstrap_template
|
Label; defaultnya adalah |
coverage_tool
|
Label; defaultnya adalah py_binary
dan py_test .
Jika ditetapkan, target harus menghasilkan satu file atau berupa target yang dapat dieksekusi. Jalur ke satu file, atau file yang dapat dieksekusi jika target dapat dieksekusi, menentukan titik entri untuk alat cakupan python. Target dan runfile-nya akan ditambahkan ke runfile saat cakupan diaktifkan. Titik entri untuk alat ini harus dapat dimuat oleh penafsir python (misalnya,
file |
files
|
Daftar label; default-nya adalah |
interpreter
|
Label; default-nya adalah |
interpreter_path
|
String; default-nya adalah |
python_version
|
String; default-nya adalah "PY2"
dan "PY3" .
Nilai default dikontrol oleh flag |
stub_shebang
|
String; default-nya adalah py_binary .
Lihat masalah 8685 untuk motivasi. Tidak berlaku untuk Windows. |