กฎ Python

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

กฎ

py_binary

ดูแหล่งที่มาของกฎ
py_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, interpreter_args, legacy_create_init, licenses, main, main_module, output_licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, 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 มีแนวคิดเกี่ยวกับทรัพยากรที่รันไทม์
distribs

รายการสตริง ค่าเริ่มต้นคือ []

imports

รายการสตริง ค่าเริ่มต้นคือ []

รายการไดเรกทอรีการนำเข้าที่จะเพิ่มลงใน PYTHONPATH ขึ้นอยู่กับการแทนที่ "สร้างตัวแปร" ระบบจะเพิ่มไดเรกทอรีการนำเข้าเหล่านี้ สำหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ ขึ้นอยู่กับ) กฎ `py_binary` ที่ขึ้นอยู่กับกฎนี้จะเพิ่มแต่ละไดเรกทอรีลงใน `PYTHONPATH` สตริงต้องเป็นเส้นทางที่เกี่ยวข้องกับ repo-runfiles-root ไม่อนุญาตให้ใช้เส้นทางแบบสัมบูรณ์ (เส้นทางที่ขึ้นต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทาง เหนือรูทการดำเนินการ และจะทำให้เกิดข้อผิดพลาด
interpreter_args

รายการสตริง ค่าเริ่มต้นคือ []

อาร์กิวเมนต์ที่ใช้ได้กับอินเทอร์พรีเตอร์เท่านั้น อาร์กิวเมนต์ที่ล่ามรองรับจะขึ้นอยู่กับล่ามนั้นๆ สำหรับ CPython โปรดดู https://docs.python.org/3/using/cmdline.html :::{note} รองรับเฉพาะ {obj}`--bootstrap_impl=script` เท่านั้น ระบบจะละเว้นในกรณีอื่นๆ ::: :::{seealso} ตัวแปรสภาพแวดล้อม {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` ::: :::{versionadded} 1.3.0 :::
legacy_create_init

จำนวนเต็ม ค่าเริ่มต้นคือ -1

เลือกว่าจะสร้างไฟล์ `__init__.py` ว่างเปล่าในโครงสร้างไฟล์ที่เรียกใช้โดยนัยหรือไม่ ระบบจะสร้างไฟล์เหล่านี้ในทุกไดเรกทอรีที่มีซอร์สโค้ด Python หรือไลบรารีที่ใช้ร่วมกัน และทุกไดเรกทอรีระดับบนสุดของไดเรกทอรีเหล่านั้น ยกเว้นไดเรกทอรีรูทของที่เก็บ ค่าเริ่มต้น `-1` (อัตโนมัติ) หมายถึงจริง เว้นแต่จะใช้ `--incompatible_default_to_explicit_init_py` หากเป็นเท็จ ผู้ใช้จะต้อง รับผิดชอบในการสร้างไฟล์ `__init__.py` (อาจเป็นไฟล์ว่าง) และเพิ่มไฟล์เหล่านั้นลงใน `srcs` ของเป้าหมาย Python ตามที่จำเป็น
main

ป้ายกำกับ ค่าเริ่มต้นคือ None

ไม่บังคับ ชื่อของไฟล์ต้นฉบับซึ่งเป็นจุดแรกเข้าหลักของ แอปพลิเคชัน ไฟล์นี้ต้องแสดงอยู่ใน `srcs` ด้วย หากไม่ได้ระบุ ระบบจะใช้ `name` แทนโดยต่อท้ายด้วย `.py` หาก `name` ไม่ตรงกับชื่อไฟล์ใดๆ ใน `srcs` คุณต้องระบุ `main` ซึ่งจะใช้ร่วมกับ {obj}`main_module` ไม่ได้
main_module

สตริง ค่าเริ่มต้นคือ ""

ชื่อโมดูลที่จะเรียกใช้เป็นโปรแกรมหลัก เมื่อตั้งค่าแล้ว คุณไม่จำเป็นต้องระบุ `srcs` และระบบจะถือว่าโมดูล มาจากการอ้างอิง ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้โมดูลเป็นโปรแกรมหลักได้ที่ https://docs.python.org/3/using/cmdline.html#cmdoption-m ซึ่งจะใช้ร่วมกับ {obj}`main` ไม่ได้ :::{versionadded} 1.3.0 :::
precompile

สตริง ค่าเริ่มต้นคือ "inherit"

ควรกำหนดให้คอมไพล์ล่วงหน้าสำหรับไฟล์ต้นฉบับ py **สำหรับเป้าหมายนี้** หรือไม่ ค่า * `inherit`: อนุญาตให้ไบนารีปลายทางตัดสินใจว่าจะใช้ไฟล์ที่คอมไพล์ล่วงหน้าหรือไม่ * `enabled`: คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ * `disabled`: ไม่คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ :::{seealso} * แฟล็ก {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` หมายถึง "อินเทอร์พรีเตอร์ปัจจุบัน" ซึ่งจะเป็นอินเทอร์พรีเตอร์ที่ใช้ _ในเวลาบิลด์เมื่อสร้าง pyc_ ไม่ใช่อินเทอร์พรีเตอร์ที่ใช้ในรันไทม์เมื่อโค้ดทำงานจริง
precompile_source_retention

สตริง ค่าเริ่มต้นคือ "inherit"

กำหนดว่าเมื่อคอมไพล์ไฟล์ต้นฉบับ ระบบจะเก็บไฟล์ต้นฉบับไว้ในเอาต์พุตที่ได้หรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่าจากแฟล็ก {flag}`--precompile_source_retention` * `keep_source`: รวมซอร์ส Python ต้นฉบับ * `omit_source`: ไม่รวมแหล่งที่มาของ py ต้นฉบับ
pyc_collection

สตริง ค่าเริ่มต้นคือ "inherit"

กำหนดว่าจะต้องรวมไฟล์ pyc จากทรัพยากร Dependency ด้วยตนเองหรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่าจาก {flag}`--precompile` * `include_pyc`: เพิ่มไฟล์ pyc ที่สร้างขึ้นโดยนัยจากทรัพยากร Dependency เช่น ไฟล์ pyc สำหรับเป้าหมายที่ระบุ {attr}`precompile="inherit"` * `disabled`: ไม่เพิ่มไฟล์ pyc ที่สร้างขึ้นโดยนัย โปรดทราบว่าไฟล์ pyc อาจยังมาจากทรัพยากร Dependency ที่เปิดใช้การคอมไพล์ล่วงหน้าที่ ระดับเป้าหมาย
pyi_deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ทรัพยากร Dependency ที่ให้คำจำกัดความประเภทที่ไลบรารีต้องการ ซึ่งเป็นส่วนประกอบที่ต้องมีเพื่อให้การนำเข้าเป็นไปตามที่ระบุไว้ใน `typing.TYPE_CHECKING` ส่วนประกอบเหล่านี้เป็นส่วนประกอบที่ต้องมีในเวลาบิลด์เท่านั้น และไม่ได้รวมเป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมส่วนประกอบเหล่านี้ไว้ด้วย) :::{versionadded} 1.1.0 :::
pyi_srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ไฟล์คำจำกัดประเภทสำหรับไลบรารี โดยปกติจะเป็นไฟล์ `.pyi` แต่ก็อนุญาตให้ใช้ไฟล์ประเภทอื่นๆ สำหรับรูปแบบเฉพาะของเครื่องมือตรวจสอบประเภทได้ ไฟล์เหล่านี้เป็นทรัพยากร Dependency ที่ใช้ในเวลาบิลด์เท่านั้นและไม่ได้รวมไว้ เป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมไฟล์เหล่านี้ไว้) :::{versionadded} 1.1.0 :::
python_version

สตริง ค่าเริ่มต้นคือ ""

เวอร์ชัน Python ที่เป้าหมายนี้ควรใช้ ค่าควรอยู่ในรูปแบบ `X.Y` หรือ `X.Y.Z` (หรือรูปแบบที่เข้ากันได้) หากเว้นว่างหรือไม่ได้ระบุ ระบบจะรับค่าแฟล็ก {obj}`--python_version` ของการกำหนดค่าขาเข้า ระบบจะยอมรับค่า `PY2` และ `PY3` เพื่อให้เข้ากันได้กับเวอร์ชันก่อนหน้า แต่จะถือว่าเป็นค่าว่าง/ไม่ได้ระบุ :::{note} หากต้องการใช้เวอร์ชันที่ขอ จะต้องมีการกำหนดค่า เครื่องมือเชนให้ตรงกับเวอร์ชัน Python หากไม่มี ระบบอาจไม่สนใจเงียบๆ หรืออาจเกิดข้อผิดพลาดขึ้น ทั้งนี้ขึ้นอยู่กับการกำหนดค่า Toolchain ::: :::{versionchanged} 1.1.0 แอตทริบิวต์นี้มีการเปลี่ยนแปลงจากที่รับเฉพาะค่า `PY2` และ `PY3` เป็น รับเวอร์ชัน Python ใดก็ได้ :::
srcs_version

สตริง ค่าเริ่มต้นคือ ""

เลิกใช้แล้ว ไม่ได้ใช้ ไม่ทำอะไร
stamp

จำนวนเต็ม ค่าเริ่มต้นคือ -1

เลือกว่าจะเข้ารหัสข้อมูลการสร้างลงในไบนารีหรือไม่ ค่าที่เป็นไปได้ * `stamp = 1`: ประทับข้อมูลการสร้างลงในไบนารีเสมอ แม้ในการสร้าง `--nostamp` **ไม่ควรใช้การตั้งค่านี้** เนื่องจากอาจทำให้แคชระยะไกลสำหรับไบนารีและการดำเนินการดาวน์สตรีมที่ขึ้นอยู่กับไบนารีนั้นหยุดทำงาน * `stamp = 0`: แทนที่ข้อมูลการสร้างด้วยค่าคงที่เสมอ ซึ่งจะช่วยให้แคชผลลัพธ์การบิลด์ทำงานได้ดี * `stamp = -1`: การฝังข้อมูลบิลด์จะควบคุมโดยแฟล็ก `--[no]stamp` ระบบจะไม่สร้างไบนารีที่ประทับเวลาใหม่ เว้นแต่ว่ามีการเปลี่ยนแปลงในส่วนที่ขึ้นอยู่กับไบนารีนั้น คำเตือน: การประทับเวลาอาจส่งผลเสียต่อประสิทธิภาพการสร้างโดยการลดแคชฮิต และควรหลีกเลี่ยงหากเป็นไปได้

py_library

ดูแหล่งที่มาของกฎ
py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyi_deps, pyi_srcs, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
ไลบรารีของโค้ด Python ที่ใช้เป็นทรัพยากรได้ เอาต์พุตเริ่มต้น * แหล่งที่มาของ Python ที่ป้อน * อาร์ติแฟกต์ที่คอมไพล์ล่วงหน้าจากแหล่งที่มา หมายเหตุ: การคอมไพล์ล่วงหน้ามีผลต่อเอาต์พุตเริ่มต้นที่จะรวมไว้ใน ไฟล์ที่รันที่ได้ ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์และแฟล็กที่เกี่ยวข้องกับการคอมไพล์ล่วงหน้า :::{versionchanged} 0.37.0 ระบบจะไม่เพิ่มไฟล์ต้นฉบับลงในไฟล์ที่เรียกใช้โดยตรงอีกต่อไป :::

อาร์กิวเมนต์

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 มีแนวคิดเกี่ยวกับทรัพยากรที่รันไทม์
distribs

รายการสตริง ค่าเริ่มต้นคือ []

imports

รายการสตริง ค่าเริ่มต้นคือ []

รายการไดเรกทอรีการนำเข้าที่จะเพิ่มลงใน PYTHONPATH ขึ้นอยู่กับการแทนที่ "สร้างตัวแปร" ระบบจะเพิ่มไดเรกทอรีการนำเข้าเหล่านี้ สำหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ ขึ้นอยู่กับ) กฎ `py_binary` ที่ขึ้นอยู่กับกฎนี้จะเพิ่มแต่ละไดเรกทอรีลงใน `PYTHONPATH` สตริงต้องเป็นเส้นทางที่เกี่ยวข้องกับ repo-runfiles-root ไม่อนุญาตให้ใช้เส้นทางแบบสัมบูรณ์ (เส้นทางที่ขึ้นต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทาง เหนือรูทการดำเนินการ และจะทำให้เกิดข้อผิดพลาด
precompile

สตริง ค่าเริ่มต้นคือ "inherit"

ควรกำหนดให้คอมไพล์ล่วงหน้าสำหรับไฟล์ต้นฉบับ py **สำหรับเป้าหมายนี้** หรือไม่ ค่า * `inherit`: อนุญาตให้ไบนารีปลายทางตัดสินใจว่าจะใช้ไฟล์ที่คอมไพล์ล่วงหน้าหรือไม่ * `enabled`: คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ * `disabled`: ไม่คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ :::{seealso} * แฟล็ก {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` หมายถึง "อินเทอร์พรีเตอร์ปัจจุบัน" ซึ่งจะเป็นอินเทอร์พรีเตอร์ที่ใช้ _ในเวลาบิลด์เมื่อสร้าง pyc_ ไม่ใช่อินเทอร์พรีเตอร์ที่ใช้ในรันไทม์เมื่อโค้ดทำงานจริง
precompile_source_retention

สตริง ค่าเริ่มต้นคือ "inherit"

กำหนดว่าเมื่อคอมไพล์ไฟล์ต้นฉบับ ระบบจะเก็บไฟล์ต้นฉบับไว้ในเอาต์พุตที่ได้หรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่าจากแฟล็ก {flag}`--precompile_source_retention` * `keep_source`: รวมซอร์ส Python ต้นฉบับ * `omit_source`: ไม่รวมแหล่งที่มาของ py ต้นฉบับ
pyi_deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ทรัพยากร Dependency ที่ให้คำจำกัดความประเภทที่ไลบรารีต้องการ ซึ่งเป็นส่วนประกอบที่ต้องมีเพื่อให้การนำเข้าเป็นไปตามที่ระบุไว้ใน `typing.TYPE_CHECKING` ส่วนประกอบเหล่านี้เป็นส่วนประกอบที่ต้องมีในเวลาบิลด์เท่านั้น และไม่ได้รวมเป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมส่วนประกอบเหล่านี้ไว้ด้วย) :::{versionadded} 1.1.0 :::
pyi_srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ไฟล์คำจำกัดประเภทสำหรับไลบรารี โดยปกติจะเป็นไฟล์ `.pyi` แต่ก็อนุญาตให้ใช้ไฟล์ประเภทอื่นๆ สำหรับรูปแบบเฉพาะของเครื่องมือตรวจสอบประเภทได้ ไฟล์เหล่านี้เป็นทรัพยากร Dependency ที่ใช้ในเวลาบิลด์เท่านั้นและไม่ได้รวมไว้ เป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมไฟล์เหล่านี้ไว้) :::{versionadded} 1.1.0 :::
srcs_version

สตริง ค่าเริ่มต้นคือ ""

เลิกใช้แล้ว ไม่ได้ใช้ ไม่ทำอะไร

py_test

ดูแหล่งที่มาของกฎ
py_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, imports, interpreter_args, legacy_create_init, licenses, local, main, main_module, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, 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 มีแนวคิดเกี่ยวกับทรัพยากรที่รันไทม์
distribs

รายการสตริง ค่าเริ่มต้นคือ []

imports

รายการสตริง ค่าเริ่มต้นคือ []

รายการไดเรกทอรีการนำเข้าที่จะเพิ่มลงใน PYTHONPATH ขึ้นอยู่กับการแทนที่ "สร้างตัวแปร" ระบบจะเพิ่มไดเรกทอรีการนำเข้าเหล่านี้ สำหรับกฎนี้และกฎทั้งหมดที่ขึ้นอยู่กับกฎนี้ (หมายเหตุ: ไม่ใช่กฎที่กฎนี้ ขึ้นอยู่กับ) กฎ `py_binary` ที่ขึ้นอยู่กับกฎนี้จะเพิ่มแต่ละไดเรกทอรีลงใน `PYTHONPATH` สตริงต้องเป็นเส้นทางที่เกี่ยวข้องกับ repo-runfiles-root ไม่อนุญาตให้ใช้เส้นทางแบบสัมบูรณ์ (เส้นทางที่ขึ้นต้นด้วย "/") และเส้นทางที่อ้างอิงเส้นทาง เหนือรูทการดำเนินการ และจะทำให้เกิดข้อผิดพลาด
interpreter_args

รายการสตริง ค่าเริ่มต้นคือ []

อาร์กิวเมนต์ที่ใช้ได้กับอินเทอร์พรีเตอร์เท่านั้น อาร์กิวเมนต์ที่ล่ามรองรับจะขึ้นอยู่กับล่ามนั้นๆ สำหรับ CPython โปรดดู https://docs.python.org/3/using/cmdline.html :::{note} รองรับเฉพาะ {obj}`--bootstrap_impl=script` เท่านั้น ระบบจะละเว้นในกรณีอื่นๆ ::: :::{seealso} ตัวแปรสภาพแวดล้อม {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` ::: :::{versionadded} 1.3.0 :::
legacy_create_init

จำนวนเต็ม ค่าเริ่มต้นคือ -1

เลือกว่าจะสร้างไฟล์ `__init__.py` ว่างเปล่าในโครงสร้างไฟล์ที่เรียกใช้โดยนัยหรือไม่ ระบบจะสร้างไฟล์เหล่านี้ในทุกไดเรกทอรีที่มีซอร์สโค้ด Python หรือไลบรารีที่ใช้ร่วมกัน และทุกไดเรกทอรีระดับบนสุดของไดเรกทอรีเหล่านั้น ยกเว้นไดเรกทอรีรูทของที่เก็บ ค่าเริ่มต้น `-1` (อัตโนมัติ) หมายถึงจริง เว้นแต่จะใช้ `--incompatible_default_to_explicit_init_py` หากเป็นเท็จ ผู้ใช้จะต้อง รับผิดชอบในการสร้างไฟล์ `__init__.py` (อาจเป็นไฟล์ว่าง) และเพิ่มไฟล์เหล่านั้นลงใน `srcs` ของเป้าหมาย Python ตามที่จำเป็น
main

ป้ายกำกับ ค่าเริ่มต้นคือ None

ไม่บังคับ ชื่อของไฟล์ต้นฉบับซึ่งเป็นจุดแรกเข้าหลักของ แอปพลิเคชัน ไฟล์นี้ต้องแสดงอยู่ใน `srcs` ด้วย หากไม่ได้ระบุ ระบบจะใช้ `name` แทนโดยต่อท้ายด้วย `.py` หาก `name` ไม่ตรงกับชื่อไฟล์ใดๆ ใน `srcs` คุณต้องระบุ `main` ซึ่งจะใช้ร่วมกับ {obj}`main_module` ไม่ได้
main_module

สตริง ค่าเริ่มต้นคือ ""

ชื่อโมดูลที่จะเรียกใช้เป็นโปรแกรมหลัก เมื่อตั้งค่าแล้ว คุณไม่จำเป็นต้องระบุ `srcs` และระบบจะถือว่าโมดูล มาจากการอ้างอิง ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้โมดูลเป็นโปรแกรมหลักได้ที่ https://docs.python.org/3/using/cmdline.html#cmdoption-m ซึ่งจะใช้ร่วมกับ {obj}`main` ไม่ได้ :::{versionadded} 1.3.0 :::
precompile

สตริง ค่าเริ่มต้นคือ "inherit"

ควรกำหนดให้คอมไพล์ล่วงหน้าสำหรับไฟล์ต้นฉบับ py **สำหรับเป้าหมายนี้** หรือไม่ ค่า * `inherit`: อนุญาตให้ไบนารีปลายทางตัดสินใจว่าจะใช้ไฟล์ที่คอมไพล์ล่วงหน้าหรือไม่ * `enabled`: คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ * `disabled`: ไม่คอมไพล์ไฟล์ต้นฉบับ Python ในเวลาบิลด์ :::{seealso} * แฟล็ก {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` หมายถึง "อินเทอร์พรีเตอร์ปัจจุบัน" ซึ่งจะเป็นอินเทอร์พรีเตอร์ที่ใช้ _ในเวลาบิลด์เมื่อสร้าง pyc_ ไม่ใช่อินเทอร์พรีเตอร์ที่ใช้ในรันไทม์เมื่อโค้ดทำงานจริง
precompile_source_retention

สตริง ค่าเริ่มต้นคือ "inherit"

กำหนดว่าเมื่อคอมไพล์ไฟล์ต้นฉบับ ระบบจะเก็บไฟล์ต้นฉบับไว้ในเอาต์พุตที่ได้หรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่าจากแฟล็ก {flag}`--precompile_source_retention` * `keep_source`: รวมซอร์ส Python ต้นฉบับ * `omit_source`: ไม่รวมแหล่งที่มาของ py ต้นฉบับ
pyc_collection

สตริง ค่าเริ่มต้นคือ "inherit"

กำหนดว่าจะต้องรวมไฟล์ pyc จากทรัพยากร Dependency ด้วยตนเองหรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่าจาก {flag}`--precompile` * `include_pyc`: เพิ่มไฟล์ pyc ที่สร้างขึ้นโดยนัยจากทรัพยากร Dependency เช่น ไฟล์ pyc สำหรับเป้าหมายที่ระบุ {attr}`precompile="inherit"` * `disabled`: ไม่เพิ่มไฟล์ pyc ที่สร้างขึ้นโดยนัย โปรดทราบว่าไฟล์ pyc อาจยังมาจากทรัพยากร Dependency ที่เปิดใช้การคอมไพล์ล่วงหน้าที่ ระดับเป้าหมาย
pyi_deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ทรัพยากร Dependency ที่ให้คำจำกัดความประเภทที่ไลบรารีต้องการ ซึ่งเป็นส่วนประกอบที่ต้องมีเพื่อให้การนำเข้าเป็นไปตามที่ระบุไว้ใน `typing.TYPE_CHECKING` ส่วนประกอบเหล่านี้เป็นส่วนประกอบที่ต้องมีในเวลาบิลด์เท่านั้น และไม่ได้รวมเป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมส่วนประกอบเหล่านี้ไว้ด้วย) :::{versionadded} 1.1.0 :::
pyi_srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

ไฟล์คำจำกัดประเภทสำหรับไลบรารี โดยปกติจะเป็นไฟล์ `.pyi` แต่ก็อนุญาตให้ใช้ไฟล์ประเภทอื่นๆ สำหรับรูปแบบเฉพาะของเครื่องมือตรวจสอบประเภทได้ ไฟล์เหล่านี้เป็นทรัพยากร Dependency ที่ใช้ในเวลาบิลด์เท่านั้นและไม่ได้รวมไว้ เป็นส่วนหนึ่งของโปรแกรมที่เรียกใช้ได้ (อย่างไรก็ตาม กฎการแพ็กเกจอาจรวมไฟล์เหล่านี้ไว้) :::{versionadded} 1.1.0 :::
python_version

สตริง ค่าเริ่มต้นคือ ""

เวอร์ชัน Python ที่เป้าหมายนี้ควรใช้ ค่าควรอยู่ในรูปแบบ `X.Y` หรือ `X.Y.Z` (หรือรูปแบบที่เข้ากันได้) หากเว้นว่างหรือไม่ได้ระบุ ระบบจะรับค่าแฟล็ก {obj}`--python_version` ของการกำหนดค่าขาเข้า ระบบจะยอมรับค่า `PY2` และ `PY3` เพื่อให้เข้ากันได้กับเวอร์ชันก่อนหน้า แต่จะถือว่าเป็นค่าว่าง/ไม่ได้ระบุ :::{note} หากต้องการใช้เวอร์ชันที่ขอ จะต้องมีการกำหนดค่า เครื่องมือเชนให้ตรงกับเวอร์ชัน Python หากไม่มี ระบบอาจไม่สนใจเงียบๆ หรืออาจเกิดข้อผิดพลาดขึ้น ทั้งนี้ขึ้นอยู่กับการกำหนดค่า Toolchain ::: :::{versionchanged} 1.1.0 แอตทริบิวต์นี้มีการเปลี่ยนแปลงจากที่รับเฉพาะค่า `PY2` และ `PY3` เป็น รับเวอร์ชัน Python ใดก็ได้ :::
srcs_version

สตริง ค่าเริ่มต้นคือ ""

เลิกใช้แล้ว ไม่ได้ใช้ ไม่ทำอะไร
stamp

จำนวนเต็ม ค่าเริ่มต้นคือ 0

เลือกว่าจะเข้ารหัสข้อมูลการสร้างลงในไบนารีหรือไม่ ค่าที่เป็นไปได้ * `stamp = 1`: ประทับข้อมูลการสร้างลงในไบนารีเสมอ แม้ในการสร้าง `--nostamp` **ไม่ควรใช้การตั้งค่านี้** เนื่องจากอาจทำให้แคชระยะไกลสำหรับไบนารีและการดำเนินการดาวน์สตรีมที่ขึ้นอยู่กับไบนารีนั้นหยุดทำงาน * `stamp = 0`: แทนที่ข้อมูลการสร้างด้วยค่าคงที่เสมอ ซึ่งจะช่วยให้แคชผลลัพธ์การบิลด์ทำงานได้ดี * `stamp = -1`: การฝังข้อมูลบิลด์จะควบคุมโดยแฟล็ก `--[no]stamp` ระบบจะไม่สร้างไบนารีที่ประทับเวลาใหม่ เว้นแต่ว่ามีการเปลี่ยนแปลงในส่วนที่ขึ้นอยู่กับไบนารีนั้น คำเตือน: การประทับเวลาอาจส่งผลเสียต่อประสิทธิภาพการสร้างโดยการลดแคชฮิต และควรหลีกเลี่ยงหากเป็นไปได้

py_runtime

ดูแหล่งที่มาของกฎ
py_runtime(name, abi_flags, bootstrap_template, compatible_with, coverage_tool, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, package_metadata, pyc_tag, python_version, restricted_to, site_init_template, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
แสดงถึงรันไทม์ Python ที่ใช้ในการเรียกใช้โค้ด Python เป้าหมาย `py_runtime` สามารถแสดงถึง *รันไทม์ของแพลตฟอร์ม* หรือ *รันไทม์ในบิลด์* รันไทม์ของแพลตฟอร์มจะเข้าถึงอินเทอร์พรีเตอร์ที่ติดตั้งในระบบที่เส้นทางที่รู้จัก ในขณะที่รันไทม์ในบิลด์จะชี้ไปยังเป้าหมายที่เรียกใช้งานได้ซึ่งทำหน้าที่เป็น อินเทอร์พรีเตอร์ ในทั้ง 2 กรณี "อินเทอร์พรีเตอร์" หมายถึงไบนารีที่เรียกใช้งานได้หรือสคริปต์ Wrapper ที่สามารถเรียกใช้สคริปต์ Python ที่ส่งผ่านในบรรทัดคำสั่ง โดยทำตามรูปแบบเดียวกันกับอินเทอร์พรีเตอร์ CPython มาตรฐาน รันไทม์ของแพลตฟอร์มโดยธรรมชาติแล้วจะไม่ใช่แบบเฮอร์เมติก ซึ่งกำหนดให้แพลตฟอร์มเป้าหมายต้องมีอินเทอร์พรีเตอร์อยู่ที่เส้นทางที่เฉพาะเจาะจง รันไทม์ในตัวอาจเป็นหรือไม่เป็นแบบเฮอร์เมติกก็ได้ ขึ้นอยู่กับว่ารันไทม์นั้นชี้ไปยัง อินเทอร์พรีเตอร์ที่เช็คอินแล้วหรือสคริปต์ 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

ชื่อ (ต้องระบุ)

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

abi_flags

สตริง ค่าเริ่มต้นคือ ""

แฟล็ก ABI ของรันไทม์ เช่น `sys.abiflags` หากไม่ได้ตั้งค่าไว้ ระบบจะตั้งค่าตามแฟล็ก
bootstrap_template

ป้ายกำกับ ค่าเริ่มต้นคือ "@rules_python//python/private:bootstrap_template"

ไฟล์เทมเพลตสคริปต์การเริ่มต้นระบบที่จะใช้ ควรมี %python_binary%, %workspace_name%, %main% และ %imports% หลังจากขยายแล้ว เทมเพลตนี้จะกลายเป็นไฟล์ที่ดำเนินการได้ซึ่งใช้เพื่อเริ่มกระบวนการ ดังนั้นจึงมีหน้าที่รับผิดชอบต่อการดำเนินการเริ่มต้น เช่น การค้นหาอินเทอร์พรีเตอร์ Python, ไฟล์ที่ดำเนินการได้ และการสร้างสภาพแวดล้อมเพื่อเรียกใช้แอปพลิเคชัน 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 ระบบจะเพิ่มเป้าหมายและ ไฟล์ที่รันได้ลงในไฟล์ที่รันได้เมื่อเปิดใช้ Coverage จุดแรกเข้าของเครื่องมือต้องโหลดได้โดยตัวแปล Python (เช่น ไฟล์ `.py` หรือ `.pyc`) ต้องยอมรับอาร์กิวเมนต์บรรทัดคำสั่ง ของ [`coverage.py`](https://coverage.readthedocs.io) โดยต้องมีอย่างน้อย คำสั่งย่อย `run` และ `lcov`
files

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

สำหรับรันไทม์ที่สร้างไว้ล่วงหน้า นี่คือชุดไฟล์ที่ประกอบกันเป็นรันไทม์นี้ ระบบจะเพิ่มไฟล์เหล่านี้ลงในไฟล์ที่ใช้ในการเรียกใช้ของไบนารี Python ที่ใช้รันไทม์นี้ สำหรับรันไทม์ของแพลตฟอร์ม คุณต้องไม่ตั้งค่าแอตทริบิวต์นี้
implementation_name

สตริง ค่าเริ่มต้นคือ "cpython"

ชื่อการใช้งาน Python (`sys.implementation.name`)
interpreter

ป้ายกำกับ ค่าเริ่มต้นคือ None

สำหรับรันไทม์ในตัว นี่คือเป้าหมายที่จะเรียกใช้เป็นอินเทอร์พรีเตอร์ โดยอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้ * ไฟล์เดียวซึ่งจะเป็นไบนารีของอินเทอร์พรีเตอร์ ระบบจะถือว่าอินเทอร์เพรเตอร์ดังกล่าวเป็นไฟล์ปฏิบัติการแบบไฟล์เดียวที่สมบูรณ์ในตัว หรือระบุไฟล์สนับสนุนใดๆ ใน `files` * เป้าหมายที่ปฏิบัติการได้ ไฟล์ที่เรียกใช้งานได้ของเป้าหมายจะเป็นไบนารีของอินเทอร์พรีเตอร์ เอาต์พุตเริ่มต้นอื่นๆ (`target.files`) และไฟล์ธรรมดาที่รันได้ (`runfiles.files`) จะรวมโดยอัตโนมัติราวกับว่าระบุไว้ในแอตทริบิวต์ `files` หมายเหตุ: ระบบอาจยังไม่รองรับ/เผยแพร่ไฟล์ที่เรียกใช้ของเป้าหมายอย่างถูกต้อง ไปยังผู้ใช้เครื่องมือเชน/อินเทอร์พรีเตอร์ โปรดดู bazel-contrib/rules_python/issues/1612 สำหรับรันไทม์ของแพลตฟอร์ม (เช่น มีการตั้งค่า `interpreter_path`) ต้องไม่ตั้งค่าแอตทริบิวต์นี้
interpreter_path

สตริง ค่าเริ่มต้นคือ ""

สําหรับรันไทม์ของแพลตฟอร์ม นี่คือเส้นทางสัมบูรณ์ของตัวแปล Python ใน แพลตฟอร์มเป้าหมาย สำหรับรันไทม์ในตัว คุณต้องไม่ตั้งค่าแอตทริบิวต์นี้
interpreter_version_info

พจนานุกรม: สตริง -> สตริง ค่าเริ่มต้นคือ {}

ข้อมูลเวอร์ชันเกี่ยวกับอินเทอร์พรีเตอร์ที่รันไทม์นี้มีให้ หากไม่ได้ระบุไว้ จะใช้ {obj}`--python_version` คีย์ที่รองรับจะตรงกับชื่อของ `sys.version_info` แม้ว่าค่าอินพุต จะเป็นสตริง แต่ส่วนใหญ่จะแปลงเป็นจำนวนเต็ม คีย์ที่รองรับมีดังนี้ * major: int, หมายเลขเวอร์ชันหลัก * minor: int, หมายเลขเวอร์ชันย่อย * micro: optional int, หมายเลขเวอร์ชันย่อย * releaselevel: optional str, ระดับการเผยแพร่ * serial: optional int, หมายเลขซีเรียลของการเผยแพร่ :::{versionchanged} 0.36.0 {obj}`--python_version` กำหนดค่าเริ่มต้น :::
pyc_tag

สตริง ค่าเริ่มต้นคือ ""

สตริงที่ไม่บังคับ ส่วนแท็กของชื่อไฟล์ pyc เช่น คำต่อท้าย `cpython-39` ของ `foo.cpython-39.pyc` ดู PEP 3147 หากไม่ได้ระบุ ระบบจะคำนวณจาก `implementation_name` และ `interpreter_version_info` หากไม่มี pyc_tag ระบบจะสร้าง pyc ที่ไม่มีแหล่งที่มาได้อย่างถูกต้องเท่านั้น
python_version

สตริง ค่าเริ่มต้นคือ "PY3"

รันไทม์นี้เป็นของ Python เวอร์ชันหลัก 2 หรือ 3 ค่าที่ใช้ได้คือ `"PY2"` และ `"PY3"` ค่าเริ่มต้นจะควบคุมโดยแฟล็ก `--incompatible_py3_is_default` อย่างไรก็ตาม ในอนาคตแอตทริบิวต์นี้จะเป็นแอตทริบิวต์ที่ต้องระบุและจะไม่มีค่าเริ่มต้น
site_init_template

ป้ายกำกับ ค่าเริ่มต้นคือ "@rules_python//python/private:site_init_template"

เทมเพลตที่จะใช้สำหรับฮุกการเริ่มต้นเว็บไซต์ที่เฉพาะเจาะจงไบนารีซึ่งเรียกใช้โดย อินเทอร์พรีเตอร์เมื่อเริ่มต้น :::versionadded} 0.41.0 :::
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"

นิพจน์ "Shebang" ที่นำหน้าสคริปต์ Python Stub สำหรับการเริ่มต้นระบบ ซึ่งใช้เมื่อเรียกใช้เป้าหมาย {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` :::