กฎ Python

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

กฎ

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, 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

ดูแหล่งที่มาของกฎ
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

ดูแหล่งที่มาของกฎ
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

ดูแหล่งที่มาของกฎ
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` :::