กฎ Python

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 8.0 7.4 . 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` ที่โดยทั่วไปจะกำหนดโดยกฎ](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

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

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

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

กำหนดว่าเมื่อคอมไพล์ไฟล์ต้นฉบับ ระบบจะเก็บไฟล์ต้นฉบับไว้ในเอาต์พุตที่ได้หรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่ามาจาก Flag {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 อาจยังคงมาจากไลบรารีที่ใช้ร่วมกันซึ่งเปิดใช้การคอมไพล์ล่วงหน้าที่ระดับเป้าหมาย
python_version

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

เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
srcs_version

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

เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
stamp

จํานวนเต็ม ค่าเริ่มต้นคือ -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 ที่เป็นอินพุต * อาร์ติแฟกต์ที่คอมไพล์ไว้ล่วงหน้าจากแหล่งที่มา หมายเหตุ: การคอมไพล์ล่วงหน้าจะส่งผลต่อเอาต์พุตเริ่มต้นที่จะรวมอยู่ในไฟล์รันไทม์ที่ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์และ Flag ที่เกี่ยวข้องกับการคอมไพล์ล่วงหน้า :::{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 มีแนวคิดเกี่ยวกับทรัพยากรรันไทม์
imports

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

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

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

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

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

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

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

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

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

กำหนดว่าเมื่อคอมไพล์ไฟล์ต้นฉบับ ระบบจะเก็บไฟล์ต้นฉบับไว้ในเอาต์พุตที่ได้หรือไม่ ค่าที่ใช้ได้มีดังนี้ * `inherit`: รับค่ามาจาก Flag {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 อาจยังคงมาจากไลบรารีที่ใช้ร่วมกันซึ่งเปิดใช้การคอมไพล์ล่วงหน้าที่ระดับเป้าหมาย
python_version

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

เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
srcs_version

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

เลิกใช้งานแล้ว ไม่ได้ใช้งาน ไม่ได้ทําอะไร
stamp

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

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

py_runtime

ดูแหล่งที่มาของกฎ
py_runtime(name, abi_flags, 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 มาตรฐาน รันไทม์ของแพลตฟอร์มมีลักษณะที่ไม่ใช่แบบปิด ซึ่งกำหนดให้แพลตฟอร์มเป้าหมายต้องมีโปรแกรมแปลภาษาอยู่ในเส้นทางที่เฉพาะเจาะจง รันไทม์ที่ฝังมาอาจปิดสนิทหรือไม่ก็ได้ ทั้งนี้ขึ้นอยู่กับว่าชี้ไปยังโปรแกรมล่ามที่ได้รับการตรวจสอบหรือสคริปต์ 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

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

Flag ABI ของรันไทม์ เช่น `sys.abiflags` หากไม่ได้ตั้งค่า ระบบจะตั้งค่าตาม Flag
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

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

ชื่อการติดตั้งใช้งาน Python ("sys.implementation.name")
interpreter

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

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

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

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

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

ข้อมูลเวอร์ชันเกี่ยวกับโปรแกรมแปลภาษาที่รันไทม์นี้ให้ หากไม่ได้ระบุ ให้ใช้ {obj}`--python_version` คีย์ที่รองรับจะตรงกับชื่อของ `sys.version_info` แม้ว่าค่าอินพุตจะเป็นสตริง แต่ส่วนใหญ่จะแปลงเป็น int คีย์ที่รองรับมีดังนี้ * major: int, หมายเลขเวอร์ชันหลัก * minor: int, หมายเลขเวอร์ชันย่อย * micro: int ไม่บังคับ, หมายเลขเวอร์ชันย่อย * releaselevel: str ไม่บังคับ, ระดับการเผยแพร่ * serial: 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" ค่าเริ่มต้นจะควบคุมโดย Flag `--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"

นิพจน์ "Shebang" ที่ใส่ไว้ข้างหน้าสคริปต์สแต็บ Python ที่ใช้บูตสแตรป ใช้เมื่อเรียกใช้เป้าหมาย {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` :::