รายงานปัญหาopen_in_new
ดูแหล่งที่มาopen_in_new
Nightly
·
8.3
·
8.2
·
8.1
·
8.0
·
7.6
กฎ
py_binary
ดูแหล่งที่มาของกฎopen_in_new
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
ดูแหล่งที่มาของกฎopen_in_new
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
ดูแหล่งที่มาของกฎopen_in_new
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
ดูแหล่งที่มาของกฎopen_in_new
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`
:::
|