รายงานปัญหาopen_in_new
ดูแหล่งที่มาopen_in_new
รุ่น Nightly
·
7.3
·
7.2
·
7.1
·
7.0
·
6.5
กฎ
py_binary
ดูแหล่งที่มาของกฎopen_in_new
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, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
อาร์กิวเมนต์
Attributes |
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้
|
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ []
รายการไลบรารีเพิ่มเติมที่จะลิงก์กับเป้าหมาย
ดูความคิดเห็นเกี่ยวกับ
แอตทริบิวต์ ["deps" ที่โดยทั่วไปแล้วกำหนดโดย
rules](https://bazel.build/reference/be/common-definitions#typical-attributes).
ซึ่งโดยปกติแล้วจะเป็นกฎ `py_library`
เป้าหมายที่มีเฉพาะไฟล์ข้อมูลที่ใช้ขณะรันไทม์จะอยู่ใน "ข้อมูล"
|
srcs
|
รายการป้ายกำกับ (ต้องระบุ)
รายการไฟล์ต้นฉบับ Python ที่ประมวลผลเพื่อสร้างเป้าหมาย ซึ่งรวมถึงโค้ดที่เช็คอินทั้งหมดและอาจรวมถึงไฟล์ต้นฉบับที่สร้างขึ้น
ไฟล์ ".py" ควรอยู่ใน "srcs" และเป้าหมายไลบรารีจะอยู่ใน "deps" ไบนารีอื่นๆ
ไฟล์ที่อาจจำเป็นในเวลาทำงานจะอยู่ใน "ข้อมูล"
|
data
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ []
รายการไฟล์ที่ไลบรารีนี้ต้องการขณะรันไทม์ ดูความคิดเห็นเกี่ยวกับ [`แอตทริบิวต์ data ที่โดยทั่วไปจะกำหนดโดยกฎ`](https://bazel.build/reference/be/common-definitions#typical-attributes)
ไม่มี "py_embed_data" เหมือนกับที่มี "cc_embed_data" และ "go_embed_data" นั่นเป็นเพราะ Python มีแนวคิดเกี่ยวกับทรัพยากรรันไทม์
|
imports
|
รายการสตริง ค่าเริ่มต้นคือ []
รายการไดเรกทอรีการนําเข้าที่จะเพิ่มลงใน PYTHONPATH
ขึ้นอยู่กับ "สร้างตัวแปร" การแทนที่ ระบบจะเพิ่มไดเรกทอรีการนําเข้าเหล่านี้สําหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ขึ้นอยู่กับ ระบบจะเพิ่มแต่ละไดเรกทอรีลงใน `PYTHONPATH` โดยกฎ `py_binary` ที่ขึ้นอยู่กับกฎนี้ สตริงจะสัมพันธ์กับรูท repo-runfiles ระบบไม่อนุญาตให้ใช้เส้นทางแบบสัมบูรณ์ (เส้นทางที่ขึ้นต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทางที่อยู่เหนือรูทการเรียกใช้ ซึ่งจะทำให้เกิดข้อผิดพลาด
|
legacy_create_init
|
จํานวนเต็ม ค่าเริ่มต้นคือ -1
กำหนดว่าจะสร้างไฟล์ "__init__.py" ว่างเปล่าโดยปริยายในต้นไม้ runfiles หรือไม่
ระบบจะสร้างไฟล์เหล่านี้ในทุกไดเรกทอรีที่มีซอร์สโค้ด Python หรือไลบรารีที่ใช้ร่วมกัน และทุกไดเรกทอรีหลักของไดเรกทอรีเหล่านั้น ยกเว้นไดเรกทอรีรูทของรีโป ค่าเริ่มต้น "-1" (อัตโนมัติ) หมายถึง จริง เว้นแต่
มีการใช้ "--inพื้นที่โฆษณา_default_to_explicit_init_py" หากเป็น "เท็จ" ผู้ใช้จะ
มีหน้าที่สร้างไฟล์ "__init__.py" (ซึ่งอาจว่างเปล่า) และเพิ่มลงใน
"srcs" ของเป้าหมาย Python ตามที่กำหนด
|
main
|
ป้ายกํากับ ค่าเริ่มต้นคือ None
ไม่บังคับ ชื่อไฟล์ต้นฉบับที่เป็นจุดแรกเข้าหลักของแอปพลิเคชัน ไฟล์นี้ต้องอยู่ใน "srcs" ด้วย หากไม่ได้ระบุไว้
มีการใช้ "name" ที่มี ".py" ต่อท้ายแทน หาก "ชื่อ" ไม่ตรงกับรายการใดๆ
ต้องระบุชื่อไฟล์ใน "srcs" ต้องระบุ "main"
|
precompile
|
String; ค่าเริ่มต้นคือ "inherit"
ระบุว่าควรมีการคอมไพล์ไฟล์ซอร์ส py **สำหรับเป้าหมายนี้** ไว้ล่วงหน้าหรือไม่
ค่า:
* `inherit`: กำหนดค่าจาก Flag {flag}`--precompile`
* "enabled": คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ โปรดทราบว่า
--precompile_add_to_runfiles จะส่งผลกระทบต่อการรวมไฟล์ที่คอมไพล์แล้วไว้ใน
ไบนารีดาวน์สตรีม
* `disabled`: ไม่คอมไพล์ไฟล์ซอร์ส Python ในเวลาที่สร้าง
* `if_generative_source`: คอมไพล์ไฟล์ต้นฉบับ Python แต่เฉพาะในกรณีที่ไฟล์ดังกล่าวเป็นไฟล์
ไฟล์ที่สร้างขึ้น
:::{seealso}
* Flag {flag}`--precompile` ซึ่งสามารถลบล้างแอตทริบิวต์นี้ได้ในบางกรณี และจะมีผลกับเป้าหมายทั้งหมดเมื่อสร้าง
* แอตทริบิวต์ {obj}`pyc_collection` สำหรับการเปิดใช้การคอมไพล์ล่วงหน้า
แบบต่อเป้าหมาย
* เอกสาร [การคอมไพล์ล่วงหน้า](precompiling) เพื่อดูคําแนะนําเกี่ยวกับการใช้การคอมไพล์ล่วงหน้า
:::
|
precompile_invalidation_mode
|
สตริง ค่าเริ่มต้นคือ "auto"
วิธียืนยันไฟล์ที่คอมไพล์ล่วงหน้าเพื่อให้เป็นเวอร์ชันล่าสุดกับไฟล์ต้นฉบับที่เกี่ยวข้อง โดยค่าที่เป็นไปได้มีดังนี้
* "auto": ค่าที่มีผลจะได้รับการระบุโดยอัตโนมัติโดยบิลด์อื่น
การตั้งค่า
* `checked_hash`: ใช้ไฟล์ pyc หากแฮชของไฟล์ต้นฉบับตรงกับแฮช
ที่บันทึกในไฟล์ pyc ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อทำงานกับโค้ดที่
ที่คุณสามารถปรับเปลี่ยนได้
* `unchecked_hash`: ใช้ไฟล์ pyc เสมอ อย่าตรวจสอบแฮชของ Pyc กับ
ไฟล์ต้นฉบับ ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อไม่มีการแก้ไขโค้ด
ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดการทำให้โมดูล pyc ใช้งานไม่ได้ได้ที่
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
จํานวนเต็ม ค่าเริ่มต้นคือ 0
ระดับการเพิ่มประสิทธิภาพสำหรับไฟล์ที่คอมไพล์ล่วงหน้า
ดูข้อมูลเพิ่มเติมเกี่ยวกับระดับการเพิ่มประสิทธิภาพได้ที่เอกสารเกี่ยวกับอาร์กิวเมนต์ `optimize` ของฟังก์ชัน `compile()` ที่ https://docs.python.org/3/library/functions.html#compile
หมายเหตุ: ค่า "-1" หมายถึง "ล่ามปัจจุบัน" ซึ่งจะเป็นล่ามที่ใช้ในการคอมไพล์ _เมื่อสร้าง pycs_ ไม่ใช่ล่ามที่ใช้ในการรันไทม์เมื่อโค้ดทำงานจริง
|
precompile_source_retention
|
String; ค่าเริ่มต้นคือ "inherit"
กำหนดว่ามีการคอมไพล์ไฟล์ต้นฉบับหรือไม่ ในกรณีที่มีการเก็บไฟล์ต้นฉบับไว้
ในเอาต์พุตที่เป็นผลลัพธ์หรือไม่ ค่าที่ใช้ได้มีดังนี้
* "origin": รับค่าจากแฟล็ก {flag}"--precompile_source_retention"
* `keep_source`: รวมซอร์สโค้ด Python ต้นฉบับ
* `omit_source`: อย่าใส่แหล่งที่มาของ py ต้นฉบับ
* `omit_if_generate_source`: เก็บแหล่งที่มาเดิมไว้หากเป็นแหล่งที่มาปกติ
แต่ไม่ต้องระบุหากเป็นไฟล์ที่สร้างขึ้น
|
pyc_collection
|
String; ค่าเริ่มต้นคือ "inherit"
กำหนดว่าควรรวมไฟล์ pyc จากทรัพยากร Dependency ด้วยตนเองหรือไม่
หมายเหตุ: การตั้งค่านี้มีประโยชน์กับ {flag}`--precompile_add_to_runfiles=decided_elsewhere` เท่านั้น
ค่าที่ถูกต้องมีดังนี้
* `inherit`: รับค่าจาก {flag}`--pyc_collection`
* `include_pyc`: เพิ่มไฟล์ pyc จาก Dependency ในไบนารี (จาก {obj}`PyInfo.transitive_pyc_files`)
* `disabled`: อย่าเพิ่มไฟล์ pyc จาก Dependency อย่างชัดเจน โปรดทราบว่า
ไฟล์ pyc อาจยังคงมาจากทรัพยากร Dependency หากเป้าหมายรวมไฟล์ดังกล่าวเป็น
ของรันไฟล์ (เช่น เมื่อ {obj}`--precompile_add_to_runfiles=always`
)
|
python_version
|
String; ค่าเริ่มต้นคือ "PY3"
ใช้งานไม่ได้ ไม่ได้ใช้ ไม่ทํางาน
|
srcs_version
|
String; ค่าเริ่มต้นคือ "PY2AND3"
เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
|
stamp
|
Integer; ค่าเริ่มต้นคือ -1
ว่าจะเข้ารหัสข้อมูลบิลด์ลงในไบนารีหรือไม่ ค่าที่เป็นไปได้ ได้แก่
* `stamp = 1`: ประทับข้อมูลบิลด์ลงในไบนารีเสมอ แม้ในบิลด์ `--nostamp` **ควรหลีกเลี่ยงการตั้งค่านี้** เนื่องจากอาจทำให้เสียชีวิต
การแคชระยะไกลสำหรับไบนารีและการดำเนินการดาวน์สตรีมที่ใช้ไบนารี
* `stamp = 0`: แทนที่ข้อมูลบิลด์ด้วยค่าคงที่เสมอ ซึ่งจะทําให้แคชผลการบิลด์ได้ดี
* `stamp = -1`: การฝังข้อมูลของบิลด์ควบคุมโดย
ธง `--[no]stamp`
ระบบจะไม่สร้างไบนารีที่ประทับตราอีกครั้ง เว้นแต่ทรัพยากร Dependency จะมีการเปลี่ยนแปลง
คำเตือน: การประทับตราอาจส่งผลเสียต่อประสิทธิภาพการทำงานโดยการลดการเข้าสู่แคชและ
หากเป็นไปได้
|
py_library
ดูแหล่งที่มาของกฎopen_in_new
py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
ไลบรารีโค้ด Python ที่เชื่อถือได้
เอาต์พุตเริ่มต้น:
* แหล่งที่มาของ Python อินพุต
* อาร์ติแฟกต์ที่คอมไพล์ไว้ล่วงหน้าจากแหล่งที่มา
หมายเหตุ: การคอมไพล์ล่วงหน้าจะส่งผลต่อเอาต์พุตเริ่มต้นที่จะรวมอยู่ในไฟล์รันไทม์ที่ได้ ดูแอตทริบิวต์และแฟล็กที่เกี่ยวข้องกับการคอมไพล์ล่วงหน้าสำหรับ
ข้อมูลเพิ่มเติม
อาร์กิวเมนต์
Attributes |
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้
|
deps
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ []
รายการไลบรารีเพิ่มเติมที่จะลิงก์กับเป้าหมาย
ดูความคิดเห็นเกี่ยวกับแอตทริบิวต์ [`deps` ที่โดยทั่วไปจะกำหนดโดยกฎ](https://bazel.build/reference/be/common-definitions#typical-attributes)
ซึ่งโดยปกติจะเป็นกฎ `py_library`
เป้าหมายที่ให้เฉพาะไฟล์ข้อมูลที่ใช้ในรันไทม์ควรอยู่ในแอตทริบิวต์ `data`
|
srcs
|
รายการป้ายกำกับ ค่าเริ่มต้นคือ []
รายการไฟล์ซอร์ส Python ที่ประมวลผลเพื่อสร้างเป้าหมาย ซึ่งรวมถึงโค้ดที่เช็คอินทั้งหมดและอาจรวมถึงไฟล์ต้นฉบับที่สร้างขึ้น ไฟล์ .py อยู่ใน "srcs" และเป้าหมายไลบรารีอยู่ใน "deps" ไฟล์ไบนารีอื่นๆ ที่อาจต้องใช้ในรันไทม์อยู่ใน "data"
|
data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ []
รายการไฟล์ที่ไลบรารีนี้ต้องใช้เมื่อรันไทม์ ดูความคิดเห็นเกี่ยวกับ [`แอตทริบิวต์ data ที่โดยทั่วไปจะกำหนดโดยกฎ`](https://bazel.build/reference/be/common-definitions#typical-attributes)
ไม่มี "py_embed_data" เหมือนกับที่มี "cc_embed_data" และ "go_embed_data" นั่นเป็นเพราะ Python มีแนวคิดเกี่ยวกับทรัพยากรรันไทม์
|
imports
|
รายการสตริง ค่าเริ่มต้นคือ []
รายการไดเรกทอรีการนําเข้าที่จะเพิ่มลงใน PYTHONPATH
ขึ้นอยู่กับ "สร้างตัวแปร" การแทนที่ ระบบจะเพิ่มไดเรกทอรีการนําเข้าเหล่านี้สําหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ขึ้นอยู่กับ ระบบจะเพิ่มแต่ละไดเรกทอรีลงใน "PYTHONPATH" โดยกฎ "py_binary"
ที่ขึ้นอยู่กับกฎนี้ สตริงจะสัมพัทธ์กับรูทของที่เก็บ
เส้นทางสัมบูรณ์ (เส้นทางที่เริ่มต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทาง
เหนือรากการดำเนินการจะไม่ได้รับอนุญาต และจะเกิดข้อผิดพลาด
|
precompile
|
String; ค่าเริ่มต้นคือ "inherit"
ระบุว่าควรมีการคอมไพล์ไฟล์ซอร์ส py **สำหรับเป้าหมายนี้** ไว้ล่วงหน้าหรือไม่
ค่า:
* `inherit`: กำหนดค่าจาก Flag {flag}`--precompile`
* "enabled": คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ โปรดทราบว่า
--precompile_add_to_runfiles จะส่งผลกระทบต่อการรวมไฟล์ที่คอมไพล์แล้วไว้ใน
ไบนารีดาวน์สตรีม
* `disabled`: ไม่คอมไพล์ไฟล์ซอร์ส Python ในเวลาที่สร้าง
* `if_generative_source`: คอมไพล์ไฟล์ต้นฉบับ Python แต่เฉพาะในกรณีที่ไฟล์ดังกล่าวเป็นไฟล์
ไฟล์ที่สร้างขึ้น
:::{seealso}
* Flag {flag}`--precompile` ซึ่งสามารถลบล้างแอตทริบิวต์นี้ได้ในบางกรณี และจะมีผลกับเป้าหมายทั้งหมดเมื่อสร้าง
* แอตทริบิวต์ {obj}`pyc_collection` สำหรับการเปิดใช้การคอมไพล์ล่วงหน้า
แบบต่อเป้าหมาย
* เอกสาร [การคอมไพล์ล่วงหน้า](precompiling) เพื่อดูคําแนะนําเกี่ยวกับการใช้การคอมไพล์ล่วงหน้า
:::
|
precompile_invalidation_mode
|
สตริง ค่าเริ่มต้นคือ "auto"
วิธียืนยันไฟล์ที่คอมไพล์ล่วงหน้าเพื่อให้เป็นเวอร์ชันล่าสุดกับไฟล์ต้นฉบับที่เกี่ยวข้อง โดยค่าที่เป็นไปได้มีดังนี้
* "auto": ค่าที่มีผลจะได้รับการระบุโดยอัตโนมัติโดยบิลด์อื่น
การตั้งค่า
* `checked_hash`: ใช้ไฟล์ pyc หากแฮชของไฟล์ต้นฉบับตรงกับแฮช
ที่บันทึกในไฟล์ pyc ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อทำงานกับโค้ดที่
ที่คุณสามารถปรับเปลี่ยนได้
* `unchecked_hash`: ใช้ไฟล์ pyc เสมอ อย่าตรวจสอบแฮชของ Pyc กับ
ไฟล์ต้นฉบับ ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อไม่มีการแก้ไขโค้ด
ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดการทำให้โมดูล pyc ใช้งานไม่ได้ได้ที่
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
จํานวนเต็ม ค่าเริ่มต้นคือ 0
ระดับการเพิ่มประสิทธิภาพสำหรับไฟล์ที่คอมไพล์ล่วงหน้า
ดูข้อมูลเพิ่มเติมเกี่ยวกับระดับการเพิ่มประสิทธิภาพได้ที่เอกสารเกี่ยวกับอาร์กิวเมนต์ `optimize` ของฟังก์ชัน `compile()` ที่ https://docs.python.org/3/library/functions.html#compile
หมายเหตุ: ค่า "-1" หมายถึง "ล่ามปัจจุบัน" ซึ่งจะเป็นล่ามที่ใช้ในการคอมไพล์ _เมื่อสร้าง pycs_ ไม่ใช่ล่ามที่ใช้ในการรันไทม์เมื่อโค้ดทำงานจริง
|
precompile_source_retention
|
String; ค่าเริ่มต้นคือ "inherit"
กำหนดว่ามีการคอมไพล์ไฟล์ต้นฉบับหรือไม่ ในกรณีที่มีการเก็บไฟล์ต้นฉบับไว้
ในเอาต์พุตที่เป็นผลลัพธ์หรือไม่ ค่าที่ใช้ได้มีดังนี้
* `inherit`: รับค่ามาจาก Flag {flag}`--precompile_source_retention`
* `keep_source`: รวมแหล่งที่มา Python ต้นฉบับ
* `omit_source`: อย่าใส่แหล่งที่มาของ py ต้นฉบับ
* `omit_if_generated_source`: เก็บแหล่งที่มาเดิมไว้หากเป็นไฟล์แหล่งที่มาปกติ แต่ละเว้นหากเป็นไฟล์ที่สร้างขึ้น
|
srcs_version
|
สตริง ค่าเริ่มต้นคือ "PY2AND3"
เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
|
py_test
ดูแหล่งที่มาของกฎopen_in_new
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, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
อาร์กิวเมนต์
Attributes |
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้
|
deps
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ []
รายการไลบรารีเพิ่มเติมที่จะลิงก์กับเป้าหมาย
ดูความคิดเห็นเกี่ยวกับแอตทริบิวต์ [`deps` ที่โดยทั่วไปจะกำหนดโดยกฎ](https://bazel.build/reference/be/common-definitions#typical-attributes)
ซึ่งโดยปกติจะเป็นกฎ `py_library`
เป้าหมายที่ให้เฉพาะไฟล์ข้อมูลที่ใช้ในรันไทม์ควรอยู่ในแอตทริบิวต์ `data`
|
srcs
|
รายการป้ายกำกับ (ต้องระบุ)
รายการไฟล์ซอร์ส Python ที่ประมวลผลเพื่อสร้างเป้าหมาย ซึ่งรวมถึงโค้ดที่เช็คอินไว้ทั้งหมดและอาจรวมถึงไฟล์ต้นฉบับที่สร้างขึ้น ไฟล์ .py อยู่ใน "srcs" และเป้าหมายไลบรารีอยู่ใน "deps" ไฟล์ไบนารีอื่นๆ ที่อาจต้องใช้ในรันไทม์อยู่ใน "data"
|
data
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ []
รายการไฟล์ที่จุลสารนี้ต้องใช้ขณะรันไทม์ ดูความคิดเห็นเกี่ยวกับ [`แอตทริบิวต์ data ที่โดยทั่วไปจะกำหนดโดยกฎ`](https://bazel.build/reference/be/common-definitions#typical-attributes)
ไม่มี "py_embed_data" เหมือนกับที่มี "cc_embed_data" และ "go_embed_data" นั่นเป็นเพราะ Python มีแนวคิดเกี่ยวกับทรัพยากรรันไทม์
|
imports
|
รายการสตริง ค่าเริ่มต้นคือ []
รายการไดเรกทอรีการนําเข้าที่จะเพิ่มลงใน PYTHONPATH
ขึ้นอยู่กับ "สร้างตัวแปร" การแทนที่ ระบบจะเพิ่มไดเรกทอรีการนําเข้าเหล่านี้สําหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ขึ้นอยู่กับ ระบบจะเพิ่มแต่ละไดเรกทอรีลงใน `PYTHONPATH` โดยกฎ `py_binary` ที่ขึ้นอยู่กับกฎนี้ สตริงจะสัมพันธ์กับรูท repo-runfiles ระบบไม่อนุญาตให้ใช้เส้นทางแบบสัมบูรณ์ (เส้นทางที่ขึ้นต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทางที่อยู่เหนือรูทการเรียกใช้ ซึ่งจะทำให้เกิดข้อผิดพลาด
|
legacy_create_init
|
จํานวนเต็ม ค่าเริ่มต้นคือ -1
ระบุว่าสร้างไฟล์ `__init__.py` ที่ว่างเปล่าโดยปริยายในโครงสร้าง Runfiles หรือไม่
ระบบจะสร้างไฟล์เหล่านี้ในทุกไดเรกทอรีที่มีซอร์สโค้ด Python หรือไลบรารีที่ใช้ร่วมกัน และทุกไดเรกทอรีหลักของไดเรกทอรีเหล่านั้น ยกเว้นไดเรกทอรีรูทของรีโป ค่าเริ่มต้น "-1" (อัตโนมัติ) หมายถึง จริง เว้นแต่
มีการใช้ "--incompatible_default_to_explicit_init_py" หากเป็น "เท็จ" ผู้ใช้จะ
มีหน้าที่สร้างไฟล์ "__init__.py" (ซึ่งอาจว่างเปล่า) และเพิ่มลงใน
"srcs" ของเป้าหมาย Python ตามที่กำหนด
|
main
|
ป้ายกำกับ ค่าเริ่มต้นคือ None
ไม่บังคับ ชื่อไฟล์ต้นฉบับที่เป็นจุดแรกเข้าหลักของไฟล์
แอปพลิเคชัน ไฟล์นี้ต้องแสดงอยู่ใน `srcs` ด้วย หากไม่ได้ระบุ ระบบจะใช้ `name` ต่อท้ายด้วย `.py` แทน หาก `name` ไม่ตรงกับชื่อไฟล์ใดๆ ใน `srcs` คุณต้องระบุ `main`
|
precompile
|
String; ค่าเริ่มต้นคือ "inherit"
ระบุว่าควรมีการคอมไพล์ไฟล์ซอร์ส py **สำหรับเป้าหมายนี้** ไว้ล่วงหน้าหรือไม่
ค่า:
* `inherit`: กำหนดค่าจาก Flag {flag}`--precompile`
* "enabled": คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ โปรดทราบว่า
--precompile_add_to_runfiles จะส่งผลกระทบต่อการรวมไฟล์ที่คอมไพล์แล้วไว้ใน
ไบนารีดาวน์สตรีม
* `disabled`: ไม่คอมไพล์ไฟล์ซอร์ส Python ในเวลาที่สร้าง
* `if_generative_source`: คอมไพล์ไฟล์ต้นฉบับ Python แต่เฉพาะในกรณีที่ไฟล์ดังกล่าวเป็นไฟล์
ไฟล์ที่สร้างขึ้น
:::{seealso}
* Flag {flag}`--precompile` ซึ่งสามารถลบล้างแอตทริบิวต์นี้ได้ในบางกรณี และจะมีผลกับเป้าหมายทั้งหมดเมื่อสร้าง
* แอตทริบิวต์ {obj}`pyc_collection` สำหรับการเปิดใช้การคอมไพล์ล่วงหน้า
แบบต่อเป้าหมาย
* เอกสาร [การคอมไพล์ล่วงหน้า](precompiling) เพื่อดูคําแนะนําเกี่ยวกับการใช้การคอมไพล์ล่วงหน้า
:::
|
precompile_invalidation_mode
|
สตริง ค่าเริ่มต้นคือ "auto"
วิธียืนยันไฟล์ที่คอมไพล์ล่วงหน้าเพื่อให้เป็นเวอร์ชันล่าสุดกับไฟล์ต้นฉบับที่เกี่ยวข้อง โดยค่าที่เป็นไปได้มีดังนี้
* "auto": ค่าที่มีผลจะได้รับการระบุโดยอัตโนมัติโดยบิลด์อื่น
การตั้งค่า
* `checked_hash`: ใช้ไฟล์ pyc หากแฮชของไฟล์ต้นฉบับตรงกับแฮช
ที่บันทึกในไฟล์ pyc ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อทำงานกับโค้ดที่
ที่คุณสามารถปรับเปลี่ยนได้
* `unchecked_hash`: ใช้ไฟล์ pyc เสมอ อย่าตรวจสอบแฮชของ Pyc กับ
ไฟล์ต้นฉบับ ซึ่งจะเป็นประโยชน์มากที่สุดเมื่อไม่มีการแก้ไขโค้ด
ดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดการทำให้โมดูล pyc ใช้งานไม่ได้ได้ที่
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
จํานวนเต็ม ค่าเริ่มต้นคือ 0
ระดับการเพิ่มประสิทธิภาพสำหรับไฟล์ที่คอมไพล์ล่วงหน้า
ดูข้อมูลเพิ่มเติมเกี่ยวกับระดับการเพิ่มประสิทธิภาพได้ที่เอกสารเกี่ยวกับอาร์กิวเมนต์ `optimize` ของฟังก์ชัน `compile()` ที่ https://docs.python.org/3/library/functions.html#compile
หมายเหตุ: ค่า "-1" หมายถึง "ล่ามปัจจุบัน" ซึ่งจะเป็นล่ามที่ใช้ในการคอมไพล์ _เมื่อสร้าง pycs_ ไม่ใช่ล่ามที่ใช้ในการรันไทม์เมื่อโค้ดทำงานจริง
|
precompile_source_retention
|
String; ค่าเริ่มต้นคือ "inherit"
กำหนดว่ามีการคอมไพล์ไฟล์ต้นฉบับหรือไม่ ในกรณีที่มีการเก็บไฟล์ต้นฉบับไว้
ในเอาต์พุตที่เป็นผลลัพธ์หรือไม่ ค่าที่ใช้ได้มีดังนี้
* "origin": รับค่าจากแฟล็ก {flag}"--precompile_source_retention"
* `keep_source`: รวมซอร์สโค้ด Python ต้นฉบับ
* `omit_source`: อย่าใส่แหล่งที่มาของ py ต้นฉบับ
* `omit_if_generate_source`: เก็บแหล่งที่มาเดิมไว้หากเป็นแหล่งที่มาปกติ
แต่ไม่ต้องระบุหากเป็นไฟล์ที่สร้างขึ้น
|
pyc_collection
|
String; ค่าเริ่มต้นคือ "inherit"
กำหนดว่าควรรวมไฟล์ pyc จากทรัพยากร Dependency ด้วยตนเองหรือไม่
หมายเหตุ: การตั้งค่านี้มีประโยชน์กับ {flag}`--precompile_add_to_runfiles=decided_elsewhere` เท่านั้น
ค่าที่ถูกต้องมีดังนี้
* `inherit`: รับค่าจาก {flag}`--pyc_collection`
* `include_pyc`: เพิ่มไฟล์ pyc จาก Dependency ในไบนารี (จาก {obj}`PyInfo.transitive_pyc_files`)
* `disabled`: อย่าเพิ่มไฟล์ pyc จาก Dependency อย่างชัดเจน โปรดทราบว่า
ไฟล์ pyc อาจยังคงมาจากทรัพยากร Dependency หากเป้าหมายรวมไฟล์ดังกล่าวเป็น
ของรันไฟล์ (เช่น เมื่อ {obj}`--precompile_add_to_runfiles=always`
)
|
python_version
|
String; ค่าเริ่มต้นคือ "PY3"
ใช้งานไม่ได้ ไม่ได้ใช้ ไม่ทํางาน
|
srcs_version
|
String; ค่าเริ่มต้นคือ "PY2AND3"
เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
|
stamp
|
Integer; ค่าเริ่มต้นคือ 0
ระบุว่าจะเข้ารหัสข้อมูลบิลด์ลงในไบนารีหรือไม่ ค่าที่เป็นไปได้ ได้แก่
* `stamp = 1`: ประทับข้อมูลบิลด์ลงในไบนารีเสมอ แม้ในบิลด์ `--nostamp` **ควรหลีกเลี่ยงการตั้งค่านี้** เนื่องจากอาจทำให้เสียชีวิต
การแคชระยะไกลสำหรับไบนารีและการดำเนินการดาวน์สตรีมที่ใช้ไบนารี
* `stamp = 0`: แทนที่ข้อมูลบิลด์ด้วยค่าคงที่เสมอ ซึ่งจะทําให้แคชผลลัพธ์การสร้างที่ดี
* `stamp = -1`: การฝังข้อมูลของบิลด์ควบคุมโดย
ธง `--[no]stamp`
ระบบจะไม่สร้างไบนารีที่ประทับตราอีกครั้ง เว้นแต่ทรัพยากร Dependency จะมีการเปลี่ยนแปลง
คำเตือน: การประทับตราอาจส่งผลเสียต่อประสิทธิภาพการทำงานโดยการลดการเข้าสู่แคชและ
หากเป็นไปได้
|
py_runtime
ดูแหล่งที่มาของกฎopen_in_new
py_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, exec_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, pyc_tag, python_version, restricted_to, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
แสดงรันไทม์ Python ที่ใช้เรียกใช้โค้ด Python
เป้าหมาย `py_runtime` อาจแสดงถึง *รันไทม์ของแพลตฟอร์ม* หรือ *รันไทม์ในบิลด์* รันไทม์ของแพลตฟอร์มจะเข้าถึงโปรแกรมแปลภาษาที่ระบบติดตั้งไว้ตามเส้นทางที่ทราบ ส่วนรันไทม์ในตัวจะชี้ไปยังเป้าหมายที่เรียกใช้งานได้ซึ่งทำหน้าที่เป็นโปรแกรมแปลภาษา ในทั้ง 2 กรณี "ล่าม" หมายถึงไบนารีที่ดำเนินการได้หรือ
สคริปต์ Wrapper ที่เรียกใช้สคริปต์ Python ที่ส่งผ่านคำสั่งได้
ที่เป็นไปตามรูปแบบเดียวกับล่าม CPython มาตรฐาน
รันไทม์ของแพลตฟอร์มเป็นไปอย่างเป็นธรรมชาติ มีข้อกำหนดเกี่ยวกับ
แพลตฟอร์มเป้าหมายเพื่อให้ล่ามอยู่ในเส้นทางที่เฉพาะเจาะจง CANNOT TRANSLATE
รันไทม์ภายในบิลด์อาจมีหรือไม่มีข้อผิดพลาด ขึ้นอยู่กับว่าปลายทางนั้นชี้ไปยัง
ล่ามเช็คอินหรือสคริปต์ Wrapper ที่เข้าถึงระบบ
เป็นล่าม
ตัวอย่าง
```
load("@rules_python//python:py_runtime.bzl", "py_runtime")
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",
)
```
อาร์กิวเมนต์
Attributes |
name |
ชื่อ ต้องระบุ
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้
|
bootstrap_template
|
ป้ายกํากับ ค่าเริ่มต้นคือ "@rules_python//python/private:bootstrap_template"
ไฟล์เทมเพลตสคริปต์ Bootstrap ที่จะใช้ ควรมี %python_binary%
%workspace_name%, %main% และ %imports%
หลังจากขยายเทมเพลตนี้แล้วจะกลายเป็นไฟล์ที่ปฏิบัติการได้ซึ่งใช้ในการเริ่มกระบวนการ ดังนั้นเทมเพลตนี้จึงมีหน้าที่รับผิดชอบต่อการดำเนินการบูตสแตปเริ่มต้น เช่น การค้นหาโปรแกรมล่าม Python, runfiles และการสร้างสภาพแวดล้อมเพื่อเรียกใช้แอปพลิเคชัน Python ที่ต้องการ
แม้ว่าปัจจุบันแอตทริบิวต์นี้จะกำหนดหรือไม่ก็ได้ แต่จะต้องระบุเมื่อย้ายกฎ Python ออกจาก Bazel
ชื่อตัวแปรที่แน่นอนที่ขยายเป็น API ที่ไม่เสถียรและอาจมีการเปลี่ยนแปลง
API จะเสถียรมากขึ้นเมื่อย้ายกฎ Python ออกจาก Bazel
ดูตัวแปรเพิ่มเติมได้ที่ @bazel_tools//tools/python:python_bootstrap_template.txt
|
coverage_tool
|
ป้ายกํากับ ค่าเริ่มต้นคือ None
นี่เป็นเป้าหมายที่จะใช้รวบรวมข้อมูลการครอบคลุมโค้ดจากเป้าหมาย {rule}`py_binary` และ {rule}`py_test`
หากมีการตั้งค่า เป้าหมายต้องสร้างไฟล์เดียวหรือเป้าหมายที่สั่งการได้
เส้นทางไปยังไฟล์เดียวหรือไฟล์ปฏิบัติการหากเป้าหมายเป็นไฟล์ปฏิบัติการ
กำหนดจุดแรกเข้าสำหรับเครื่องมือการครอบคลุมของ Python ระบบจะเพิ่มเป้าหมายและไฟล์รันไทม์ของเป้าหมายลงในไฟล์รันไทม์เมื่อเปิดใช้การครอบคลุม
จุดแรกเข้าของเครื่องมือต้องโหลดได้โดยใช้ล่าม Python (เช่น
ไฟล์ ".py" หรือ ".pyc") โปรแกรมต้องยอมรับอาร์กิวเมนต์บรรทัดคำสั่งของ [`coverage.py`](https://coverage.readthedocs.io) โดยอย่างน้อยต้องมีคำสั่งย่อย `run` และ `lcov`
|
files
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ []
สำหรับรันไทม์ในบิลด์ ชุดไฟล์นี้จะเป็นชุดไฟล์ที่ประกอบกันเป็นรันไทม์นี้
ระบบจะเพิ่มไฟล์เหล่านี้ลงในไฟล์รันไทม์ของไบนารี Python ที่ใช้รันไทม์นี้ สำหรับรันไทม์ของแพลตฟอร์ม คุณต้องไม่ตั้งค่าแอตทริบิวต์นี้
|
implementation_name
|
String; ค่าเริ่มต้นคือ ""
ชื่อการใช้งาน Python ("sys.implementation.name")
|
interpreter
|
ป้ายกำกับ ค่าเริ่มต้นคือ None
สำหรับรันไทม์ระหว่างสร้าง URL นี้เป็นเป้าหมายที่จะเรียกใช้เป็นล่าม โดยอาจเป็นไฟล์เดียวหรือไฟล์หลายไฟล์ก็ได้ ดังนี้
* ไฟล์เดียว ซึ่งจะเป็นไบนารีของโปรแกรมล่าม ระบบจะถือว่าโปรแกรมล่ามดังกล่าวเป็นไฟล์ปฏิบัติการไฟล์เดียวแบบสําเร็จรูป หรือไฟล์สนับสนุนใดๆ ที่ระบุไว้ใน "files"
* เป้าหมายที่ปฏิบัติการได้ ไฟล์ปฏิบัติการของเป้าหมายจะเป็นไบนารีของโปรแกรมล่าม
ระบบจะรวมเอาเอาต์พุตเริ่มต้นอื่นๆ ทั้งหมด ("target.files") และไฟล์ธรรมดาของ runfiles ("runfiles.files") โดยอัตโนมัติ เหมือนกับที่ระบุไว้ในแอตทริบิวต์ "files"
หมายเหตุ: ระบบอาจยังไม่ใช้/เผยแพร่ไฟล์รันไทม์ของเป้าหมายอย่างถูกต้องกับผู้ที่ใช้ชุดเครื่องมือ/โปรแกรมล่าม โปรดดูที่ bazelbuild/rules_python/issues/1612
สำหรับรันไทม์ของแพลตฟอร์ม (นั่นคือมีการตั้งค่า "interpreter_path") คุณต้องไม่ตั้งค่าแอตทริบิวต์นี้
|
interpreter_path
|
String; ค่าเริ่มต้นคือ ""
สำหรับรันไทม์ของแพลตฟอร์ม นี่คือเส้นทางสัมบูรณ์ของอินเทอร์พรีเตอร์ Python ใน
แพลตฟอร์มเป้าหมาย สำหรับรันไทม์ในตัว คุณต้องไม่ตั้งค่าแอตทริบิวต์นี้
|
interpreter_version_info
|
พจนานุกรม: สตริง -> สตริง ค่าเริ่มต้นคือ {}
ข้อมูลเวอร์ชันเกี่ยวกับโปรแกรมแปลภาษาที่รันไทม์นี้ให้
หากไม่ได้ระบุ ให้ใช้ {obj}`--python_version`
คีย์ที่รองรับจะตรงกับชื่อของ `sys.version_info` แม้ว่าค่าอินพุตจะเป็นสตริง แต่ส่วนใหญ่จะแปลงเป็น int คีย์ที่รองรับมีดังนี้
* Major: int, หมายเลขเวอร์ชันหลัก
* min: int, หมายเลขเวอร์ชันย่อย
* micro: int ที่ไม่บังคับ, หมายเลขเวอร์ชันไมโคร
* ระดับการเผยแพร่: str แบบไม่บังคับ, ระดับการเผยแพร่
* ซีเรียล: จำนวนเต็ม (ไม่บังคับ) หมายเลขซีเรียลของรุ่น
:::{versionchanged} 0.36.0
{obj}`--python_version` จะกำหนดค่าเริ่มต้น
:::
|
pyc_tag
|
String; ค่าเริ่มต้นคือ ""
สตริงที่ไม่บังคับ; ส่วนแท็กของชื่อไฟล์ pyc เช่น การแก้ไข "cpython-39"
ของ "foo.cpython-39.pyc" ดู PEP 3147 หากไม่ระบุ ระบบจะคํานวณค่าดังกล่าว
จาก "implementation_name" และ "interpreter_version_info" หากไม่มี pyc_tag เป็น
จะทำให้การสร้าง pyc ที่ไม่มีแหล่งที่มานั้นทำงานได้อย่างถูกต้องเท่านั้น
|
python_version
|
String; ค่าเริ่มต้นคือ "PY3"
รันไทม์นี้มีไว้สำหรับ Python เวอร์ชันหลัก 2 หรือ 3 หรือไม่ ค่าที่ถูกต้องคือ `"PY2"`
และ `"PY3"`
ค่าเริ่มต้นจะควบคุมโดยแฟล็ก "--incompatible_py3_is_default"
อย่างไรก็ตาม ในอนาคตแอตทริบิวต์นี้จะบังคับใช้และไม่มีค่าเริ่มต้น
|
stage2_bootstrap_template
|
ป้ายกำกับ ค่าเริ่มต้นคือ "@rules_python//python/private:stage2_bootstrap_template"
เทมเพลตที่จะใช้เมื่อเปิดใช้การบูตสแตป 2 ระยะ
:::{seealso}
{obj}`PyRuntimeInfo.stage2_bootstrap_template` และ {obj}`--bootstrap_impl`
:::
|
stub_shebang
|
สตริง ค่าเริ่มต้นคือ "#!/usr/bin/env python3"
"เชอบัง" ที่มีการแทรกไว้ข้างหน้าสคริปต์ Python Stub ระดับ Bootstrapping
ใช้เมื่อดำเนินการเป้าหมาย {rule}`py_binary`
ดูเหตุผลได้ที่ https://github.com/bazelbuild/bazel/issues/8685
ไม่ได้นำไปใช้กับ Windows
|
zip_main_template
|
ป้ายกํากับ ค่าเริ่มต้นคือ "@rules_python//python/private:zip_main_template"
เทมเพลตที่ใช้สำหรับไฟล์ `__main__.py` ระดับบนสุดของ ZIP
ซึ่งจะกลายเป็นจุดแรกเข้าที่จะทำงานเมื่อเรียกใช้ "python foo.zip"
:::{seealso}
ช่อง {obj}`PyRuntimeInfo.zip_main_template`
:::
|