Quy tắc Python

Báo cáo vấn đề Xem nguồn Nightly · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Quy tắc

py_binary

Xem nguồn quy tắc
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)

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; giá trị mặc định là []

Danh sách thư viện bổ sung sẽ được liên kết với mục tiêu. Xem các nhận xét về thuộc tính [`deps` thường do các quy tắc xác định](https://bazel.build/reference/be/common-definitions#typical-attributes). Đây thường là các quy tắc "py_library". Những mục tiêu chỉ cung cấp tệp dữ liệu được dùng trong thời gian chạy sẽ thuộc về "dữ liệu" .
srcs

Danh sách nhãn; bắt buộc

Danh sách các tệp nguồn Python được xử lý để tạo mục tiêu. Chiến dịch này bao gồm tất cả mã đăng ký của bạn và có thể bao gồm các tệp nguồn được tạo. Chiến lược phát hành đĩa đơn Các tệp.py thuộc về "srcs" và các mục tiêu thư viện nằm trong các "deps". Tệp nhị phân khác những tệp có thể cần thiết vào thời gian chạy thuộc về "dữ liệu".
data

Danh sách nhãn; mặc định là []

Danh sách tệp mà thư viện này cần trong thời gian chạy. Xem nhận xét về thuộc tính [`data` thường được xác định theo các quy tắc](https://bazel.build/reference/be/common-definitions#typical-attributes). Không có "py_embed_data" nào như có "cc_embed_data" và "go_embed_data". Lý do là Python có khái niệm về tài nguyên trong thời gian chạy.
imports

Danh sách các chuỗi; giá trị mặc định là []

Danh sách thư mục nhập sẽ được thêm vào PYTHONPATH. Tiêu đề "Tạo biến" thay thế. Các thư mục nhập này sẽ được thêm cho quy tắc này và tất cả các quy tắc phụ thuộc vào nó (lưu ý: không phải các quy tắc của quy tắc này phụ thuộc vào. Mỗi thư mục sẽ được thêm vào "PYTHONPATH" theo quy tắc "py_binary" phụ thuộc vào quy tắc này. Các chuỗi này tương ứng với repo-runfiles-root, không được phép sử dụng đường dẫn tuyệt đối (đường dẫn bắt đầu bằng `/`) và đường dẫn tham chiếu đến một đường dẫn phía trên thư mục gốc thực thi, nếu không sẽ dẫn đến lỗi.
legacy_create_init

Số nguyên; mặc định là -1

Liệu có ngầm tạo các tệp `__init__.py` trống trong cây runfile hay không. Các tệp này được tạo trong mọi thư mục chứa mã nguồn Python hoặc thư viện dùng chung và mọi thư mục mẹ của các thư mục đó, ngoại trừ thư mục gốc của kho lưu trữ. Mặc định, `-1` (tự động), có nghĩa là true trừ phi Hệ thống sử dụng thuộc tính "--incompatible_default_to_explicit_init_py". Nếu giá trị là false, người dùng sẽ chịu trách nhiệm tạo các tệp `__init__.py` (có thể trống) và thêm các tệp đó vào `srcs` của các mục tiêu Python theo yêu cầu.
main

Nhãn; mặc định là None

Không bắt buộc; tên của tệp nguồn là điểm truy cập chính của . Tệp này cũng phải được liệt kê trong `srcs`. Nếu không được chỉ định, hệ thống sẽ sử dụng `name` kèm theo đuôi `.py`. Nếu `name` không khớp với tên tệp nào trong `srcs`, bạn phải chỉ định `main`.
precompile

String; giá trị mặc định là "inherit"

Liệu các tệp nguồn py **cho mục tiêu này** có được biên dịch trước hay không. Giá trị: * `inherit`: Xác định giá trị từ cờ {flag}`--precompile`. * `enabled`: Biên dịch các tệp nguồn Python tại thời điểm tạo bản dựng. Lưu ý rằng --precompile_add_to_runfiles ảnh hưởng đến cách đưa các tệp đã biên dịch vào tệp nhị phân xuôi dòng. * "disabled": Không biên dịch tệp nguồn Python tại thời điểm tạo bản dựng. * "if_generated_source": Biên dịch các tệp nguồn Python, nhưng chỉ khi chúng là tệp được tạo. :::{seealso} * Cờ {flag}`--precompile` có thể ghi đè thuộc tính này trong một số trường hợp và sẽ ảnh hưởng đến tất cả mục tiêu khi tạo. * Thuộc tính {obj}`pyc_collection` để bật tính năng biên dịch trước trên cơ sở từng mục tiêu. * Tài liệu [Biên dịch trước](biên dịch) để biết hướng dẫn về cách sử dụng tính năng biên dịch trước. :::
precompile_invalidation_mode

String; giá trị mặc định là "auto"

Cách xác minh tệp được biên dịch trước để có thông tin mới nhất về tệp được liên kết tệp nguồn. Các giá trị có thể có là: * `auto`: Giá trị hiệu quả sẽ được xác định tự động theo các chế độ cài đặt bản dựng khác. * "checked_hash": Dùng tệp pyc nếu hàm băm của tệp nguồn khớp với hàm băm được ghi trong tệp pyc. Cách này hữu ích nhất khi làm việc với mã mà bạn có thể sửa đổi. * `unchecked_hash`: Luôn sử dụng tệp pyc; không kiểm tra hàm băm của pyc với tệp nguồn. Điều này hữu ích nhất khi mã không bị sửa đổi. Để biết thêm thông tin về chế độ vô hiệu hoá pyc, hãy xem https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Số nguyên; mặc định là 0

Cấp độ tối ưu hoá cho các tệp được biên dịch trước. Để biết thêm thông tin về các cấp tối ưu hoá, hãy xem hàm "compile()" Tài liệu đối số "optimize" ("tối ưu hóa") tại https://docs.python.org/3/library/functions.html#compile LƯU Ý: Giá trị `-1` có nghĩa là "thông dịch viên hiện tại", đây sẽ là thông dịch viên được sử dụng _tại thời gian dựng khi pycs được tạo_, chứ không phải trình thông dịch được sử dụng tại thời gian chạy khi mã thực sự chạy.
precompile_source_retention

String; giá trị mặc định là "inherit"

Xác định, khi một tệp nguồn được biên dịch, liệu tệp nguồn có được giữ lại trong kết quả đầu ra hay không. Các giá trị hợp lệ là: * `inherit`: Kế thừa giá trị từ cờ {flag}`--precompile_source_retention`. * `keep_source`: Bao gồm nguồn Python ban đầu. * `omit_source`: Không bao gồm nguồn py ban đầu. * `omit_if_generated_source`: Giữ lại nguồn gốc nếu đó là tệp nguồn thông thường, nhưng bỏ qua nếu đó là tệp đã tạo.
pyc_collection

Chuỗi; mặc định là "inherit"

Xác định xem có nên đưa các tệp pyc từ phần phụ thuộc vào theo cách thủ công hay không. LƯU Ý: Chế độ cài đặt này chỉ hữu ích với {flag}`--precompile_add_to_runfiles=decided_elsewhere`. Các giá trị hợp lệ là: * `inherit`: Kế thừa giá trị từ {flag}`--pyc_collection`. * `include_pyc`: Thêm các tệp pyc từ các phần phụ thuộc trong tệp nhị phân (từ {obj}`PyInfo.transitive_pyc_files`. * `disabled`: Không thêm các tệp pyc từ các phần phụ thuộc một cách rõ ràng. Lưu ý rằng pyc vẫn có thể đến từ các phần phụ thuộc nếu một mục tiêu chứa các tệp đó dưới dạng một phần của các tệp chạy của chúng (chẳng hạn như khi {obj}`--precompile_add_to_runfiles=always` được sử dụng).
python_version

String; giá trị mặc định là "PY3"

Không còn tồn tại, không được sử dụng, không làm gì cả.
srcs_version

Chuỗi; mặc định là "PY2AND3"

Không hoạt động, không dùng đến, không làm gì cả.
stamp

Integer; giá trị mặc định là -1

Liệu có mã hoá thông tin bản dựng thành tệp nhị phân hay không. Các giá trị có thể có: * `stamp = 1`: Luôn đóng dấu thông tin bản dựng vào tệp nhị phân, ngay cả trong Bản dựng "--nostamp". **Bạn nên tránh chế độ cài đặt này** vì chế độ này có thể huỷ bỏ việc lưu vào bộ nhớ đệm từ xa cho tệp nhị phân và mọi thao tác tiếp theo phụ thuộc vào tệp nhị phân đó. * `stamp = 0`: Luôn thay thế thông tin bản dựng bằng các giá trị không đổi. Điều này giúp lưu kết quả bản dựng vào bộ nhớ đệm hiệu quả. * `stamp = -1`: Việc nhúng thông tin bản dựng được kiểm soát bằng cờ `--[no]stamp`. Tệp nhị phân đã đóng dấu sẽ không được tạo lại trừ phi phần phụ thuộc của chúng thay đổi. CẢNH BÁO: Dập có thể gây hại cho hiệu suất của bản dựng bằng cách giảm số lượt truy cập vào bộ nhớ đệm và nếu có thể.

py_library

Xem nguồn quy tắc
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)
Một thư viện mã Python có thể được phụ thuộc. Đầu ra mặc định: * Các nguồn Python đầu vào * Các cấu phần phần mềm được biên dịch trước từ các nguồn. LƯU Ý: Quá trình biên dịch trước ảnh hưởng đến đầu ra mặc định nào có trong các tệp runfile thu được. Hãy xem các thuộc tính và cờ liên quan đến việc biên dịch trước để biết thêm thông tin.

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các thư viện bổ sung cần được liên kết với mục tiêu. Xem nhận xét về thuộc tính [`deps` thường được xác định bằng rules](https://bazel.build/reference/be/common-definitions#typical-attributes). Đây thường là các quy tắc "py_library". Những mục tiêu chỉ cung cấp tệp dữ liệu được dùng trong thời gian chạy sẽ thuộc về "dữ liệu" .
srcs

Danh sách nhãn; giá trị mặc định là []

Danh sách tệp nguồn Python được xử lý để tạo mục tiêu. Chiến dịch này bao gồm tất cả mã đăng ký của bạn và có thể bao gồm các tệp nguồn được tạo. Chiến lược phát hành đĩa đơn Các tệp.py thuộc về "srcs" và các mục tiêu thư viện nằm trong các "deps". Tệp nhị phân khác những tệp có thể cần thiết vào thời gian chạy thuộc về "dữ liệu".
data

Danh sách nhãn; mặc định là []

Danh sách tệp mà thư viện này cần trong thời gian chạy. Xem nhận xét về thuộc tính [`data` thường được xác định theo các quy tắc](https://bazel.build/reference/be/common-definitions#typical-attributes). Không có "py_embed_data" như có "cc_embed_data" và "go_embed_data". Lý do là Python có khái niệm về tài nguyên thời gian chạy.
imports

Danh sách các chuỗi; giá trị mặc định là []

Danh sách các thư mục nhập sẽ được thêm vào PYTHONPATH. Tiêu đề "Tạo biến" thay thế. Các thư mục nhập này sẽ được thêm cho quy tắc này và tất cả các quy tắc phụ thuộc vào nó (lưu ý: không phải các quy tắc của quy tắc này phụ thuộc vào. Mỗi thư mục sẽ được thêm vào `PYTHONPATH` theo các quy tắc `py_binary` phụ thuộc vào quy tắc này. Các chuỗi này tương ứng với repo-runfiles-root, không được phép sử dụng đường dẫn tuyệt đối (đường dẫn bắt đầu bằng `/`) và đường dẫn tham chiếu đến một đường dẫn phía trên thư mục gốc thực thi, nếu không sẽ dẫn đến lỗi.
precompile

String; giá trị mặc định là "inherit"

Liệu các tệp nguồn py **cho mục tiêu này** có được biên dịch trước hay không. Giá trị: * `inherit`: Xác định giá trị từ cờ {flag}`--precompile`. * `enabled`: Biên dịch các tệp nguồn Python tại thời điểm tạo bản dựng. Lưu ý rằng --precompile_add_to_runfiles ảnh hưởng đến cách đưa các tệp đã biên dịch vào tệp nhị phân xuôi dòng. * "disabled": Không biên dịch tệp nguồn Python tại thời điểm tạo bản dựng. * "if_generated_source": Biên dịch các tệp nguồn Python, nhưng chỉ khi chúng là tệp được tạo. :::{seealso} * Cờ {flag}`--precompile` có thể ghi đè thuộc tính này trong một số trường hợp và sẽ ảnh hưởng đến tất cả mục tiêu khi tạo. * Thuộc tính {obj}`pyc_collection` để bật tính năng biên dịch trước trên cơ sở từng mục tiêu. * Tài liệu [Biên dịch trước](biên dịch) để biết hướng dẫn về cách sử dụng tính năng biên dịch trước. :::
precompile_invalidation_mode

String; giá trị mặc định là "auto"

Cách xác minh tệp được biên dịch trước để có thông tin mới nhất về tệp được liên kết tệp nguồn. Các giá trị có thể có là: * `auto`: Giá trị hiệu quả sẽ được xác định tự động theo các chế độ cài đặt bản dựng khác. * "checked_hash": Dùng tệp pyc nếu hàm băm của tệp nguồn khớp với hàm băm được ghi trong tệp pyc. Cách này hữu ích nhất khi làm việc với mã mà bạn có thể sửa đổi. * `unchecked_hash`: Luôn sử dụng tệp pyc; không kiểm tra hàm băm của pyc với tệp nguồn. Điều này hữu ích nhất khi mã không bị sửa đổi. Để biết thêm thông tin về chế độ vô hiệu hoá pyc, hãy xem https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Số nguyên; mặc định là 0

Cấp độ tối ưu hoá cho các tệp được biên dịch trước. Để biết thêm thông tin về các cấp tối ưu hoá, hãy xem hàm "compile()" Tài liệu đối số "optimize" ("tối ưu hóa") tại https://docs.python.org/3/library/functions.html#compile LƯU Ý: Giá trị `-1` có nghĩa là "thông dịch viên hiện tại", đây sẽ là thông dịch viên được sử dụng _tại thời gian dựng khi pycs được tạo_, chứ không phải trình thông dịch được sử dụng tại thời gian chạy khi mã thực sự chạy.
precompile_source_retention

String; giá trị mặc định là "inherit"

Xác định, khi một tệp nguồn được biên dịch, liệu tệp nguồn có được giữ lại trong kết quả đầu ra hay không. Các giá trị hợp lệ là: * `inherit`: Kế thừa giá trị từ cờ {flag}`--precompile_source_retention`. * `keep_source`: Bao gồm nguồn Python gốc. * `omit_source`: Không bao gồm nguồn py ban đầu. * "omit_if_generated_source": Giữ lại nguồn ban đầu nếu đó là nguồn thông thường nhưng bỏ qua nếu đó là tệp được tạo.
srcs_version

Chuỗi; mặc định là "PY2AND3"

Không hoạt động, không dùng đến, không làm gì cả.

py_test

Xem nguồn quy tắc
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)

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách thư viện bổ sung sẽ được liên kết với mục tiêu. Xem nhận xét về thuộc tính [`deps` thường được xác định bằng rules](https://bazel.build/reference/be/common-definitions#typical-attributes). Đây thường là các quy tắc `py_library`. Những mục tiêu chỉ cung cấp tệp dữ liệu được dùng trong thời gian chạy sẽ thuộc về "dữ liệu" .
srcs

Danh sách nhãn; bắt buộc

Danh sách các tệp nguồn Python được xử lý để tạo mục tiêu. Chiến dịch này bao gồm tất cả mã đăng ký của bạn và có thể bao gồm các tệp nguồn được tạo. Các tệp `.py` thuộc về `srcs` và mục tiêu thư viện thuộc về `deps`. Các tệp nhị phân khác có thể cần thiết tại thời điểm chạy thuộc về `data`.
data

Danh sách nhãn; giá trị mặc định là []

Danh sách các tệp mà thư viện này cần trong thời gian chạy. Xem nhận xét về thuộc tính [`data` thường được xác định theo các quy tắc](https://bazel.build/reference/be/common-definitions#typical-attributes). Không có "py_embed_data" như có "cc_embed_data" và "go_embed_data". Lý do là Python có khái niệm về tài nguyên thời gian chạy.
imports

Danh sách các chuỗi; giá trị mặc định là []

Danh sách thư mục nhập sẽ được thêm vào PYTHONPATH. Tiêu đề "Tạo biến" thay thế. Các thư mục nhập này sẽ được thêm cho quy tắc này và tất cả các quy tắc phụ thuộc vào nó (lưu ý: không phải các quy tắc của quy tắc này phụ thuộc vào. Mỗi thư mục sẽ được thêm vào "PYTHONPATH" theo quy tắc "py_binary" phụ thuộc vào quy tắc này. Các chuỗi này tương ứng với repo-runfiles-root, không được phép sử dụng đường dẫn tuyệt đối (đường dẫn bắt đầu bằng `/`) và đường dẫn tham chiếu đến một đường dẫn phía trên thư mục gốc thực thi, nếu không sẽ dẫn đến lỗi.
legacy_create_init

Số nguyên; mặc định là -1

Liệu có ngầm tạo các tệp "__init__.py" trống trong cây runfile hay không. Các tệp này được tạo trong mọi thư mục chứa mã nguồn Python hoặc thư viện dùng chung và mọi thư mục mẹ của các thư mục đó, ngoại trừ thư mục gốc của kho lưu trữ. Mặc định, `-1` (tự động), có nghĩa là true trừ khi Hệ thống sử dụng "--incompatible_default_to_explicit_init_py". Nếu đặt là false, người dùng chịu trách nhiệm tạo (có thể trống) các tệp "__init__.py" và thêm các tệp đó vào "srcs" của các mục tiêu Python theo yêu cầu.
main

Nhãn; giá trị mặc định là None

Không bắt buộc; tên của tệp nguồn là điểm truy cập chính của ứng dụng. Tệp này cũng phải được liệt kê trong `srcs`. Nếu không được chỉ định, hệ thống sẽ sử dụng `name` kèm theo đuôi `.py`. Nếu `name` không khớp với tên tệp nào trong `srcs`, bạn phải chỉ định `main`.
precompile

String; giá trị mặc định là "inherit"

Liệu các tệp nguồn py **cho mục tiêu này** có được biên dịch trước hay không. Giá trị: * `inherit`: Xác định giá trị từ cờ {flag}`--precompile`. * `enabled`: Biên dịch các tệp nguồn Python tại thời điểm tạo bản dựng. Lưu ý rằng --precompile_add_to_runfiles ảnh hưởng đến cách đưa các tệp đã biên dịch vào tệp nhị phân xuôi dòng. * "disabled": Không biên dịch tệp nguồn Python tại thời điểm tạo bản dựng. * "if_generated_source": Biên dịch các tệp nguồn Python, nhưng chỉ khi chúng là tệp được tạo. :::{seealso} * Cờ {flag}`--precompile` có thể ghi đè thuộc tính này trong một số trường hợp và sẽ ảnh hưởng đến tất cả mục tiêu khi tạo. * Thuộc tính {obj}`pyc_collection` để bật tính năng biên dịch trước trên cơ sở từng mục tiêu. * Tài liệu [Biên dịch trước](biên dịch) để biết hướng dẫn về cách sử dụng tính năng biên dịch trước. :::
precompile_invalidation_mode

String; giá trị mặc định là "auto"

Cách xác minh tệp được biên dịch trước để có thông tin mới nhất về tệp được liên kết tệp nguồn. Các giá trị có thể có là: * `auto`: Giá trị hiệu quả sẽ được xác định tự động theo các chế độ cài đặt bản dựng khác. * "checked_hash": Dùng tệp pyc nếu hàm băm của tệp nguồn khớp với hàm băm được ghi trong tệp pyc. Cách này hữu ích nhất khi làm việc với mã mà bạn có thể sửa đổi. * `unchecked_hash`: Luôn sử dụng tệp pyc; không kiểm tra hàm băm của pyc với tệp nguồn. Điều này hữu ích nhất khi mã không bị sửa đổi. Để biết thêm thông tin về chế độ vô hiệu hoá pyc, hãy xem https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Số nguyên; mặc định là 0

Cấp độ tối ưu hoá cho các tệp được biên dịch trước. Để biết thêm thông tin về các cấp tối ưu hoá, hãy xem hàm "compile()" Tài liệu đối số "optimize" ("tối ưu hóa") tại https://docs.python.org/3/library/functions.html#compile LƯU Ý: Giá trị `-1` có nghĩa là "thông dịch viên hiện tại", đây sẽ là thông dịch viên được sử dụng _tại thời gian dựng khi pycs được tạo_, chứ không phải trình thông dịch được sử dụng tại thời gian chạy khi mã thực sự chạy.
precompile_source_retention

String; giá trị mặc định là "inherit"

Xác định, khi một tệp nguồn được biên dịch, liệu tệp nguồn có được giữ lại trong kết quả đầu ra hay không. Các giá trị hợp lệ là: * `inherit`: Kế thừa giá trị từ cờ {flag}`--precompile_source_retention`. * `keep_source`: Bao gồm nguồn Python ban đầu. * `omit_source`: Không bao gồm nguồn py ban đầu. * `omit_if_generated_source`: Giữ lại nguồn gốc nếu đó là tệp nguồn thông thường, nhưng bỏ qua nếu đó là tệp đã tạo.
pyc_collection

Chuỗi; mặc định là "inherit"

Xác định xem có nên đưa các tệp pyc từ phần phụ thuộc vào theo cách thủ công hay không. LƯU Ý: Chế độ cài đặt này chỉ hữu ích với {flag}`--precompile_add_to_runfiles=decided_elsewhere`. Các giá trị hợp lệ là: * `inherit`: Kế thừa giá trị từ {flag}`--pyc_collection`. * `include_pyc`: Thêm các tệp pyc từ các phần phụ thuộc trong tệp nhị phân (từ {obj}`PyInfo.transitive_pyc_files`. * `disabled`: Không thêm các tệp pyc từ các phần phụ thuộc một cách rõ ràng. Lưu ý rằng pyc vẫn có thể đến từ các phần phụ thuộc nếu một mục tiêu chứa các tệp đó dưới dạng một phần của các tệp chạy của chúng (chẳng hạn như khi {obj}`--precompile_add_to_runfiles=always` được sử dụng).
python_version

String; giá trị mặc định là "PY3"

Không còn tồn tại, không được sử dụng, không làm gì cả.
srcs_version

Chuỗi; mặc định là "PY2AND3"

Không hoạt động, không dùng đến, không làm gì cả.
stamp

Integer; giá trị mặc định là 0

Liệu có mã hoá thông tin bản dựng thành tệp nhị phân hay không. Các giá trị có thể có: * `stamp = 1`: Luôn đóng dấu thông tin bản dựng vào tệp nhị phân, ngay cả trong Bản dựng "--nostamp". **Bạn nên tránh chế độ cài đặt này** vì chế độ này có thể huỷ bỏ việc lưu vào bộ nhớ đệm từ xa cho tệp nhị phân và mọi thao tác tiếp theo phụ thuộc vào tệp nhị phân đó. * `stamp = 0`: Luôn thay thế thông tin bản dựng bằng các giá trị hằng số. Điều này mang lại lưu kết quả bản dựng tốt vào bộ nhớ đệm. * `stamp = -1`: Việc nhúng thông tin bản dựng được kiểm soát bằng cờ `--[no]stamp`. Tệp nhị phân đã đóng dấu sẽ không được tạo lại trừ phi phần phụ thuộc của chúng thay đổi. CẢNH BÁO: Tính năng đóng dấu có thể làm giảm hiệu suất bản dựng bằng cách giảm số lượt truy cập vào bộ nhớ đệm và bạn nên tránh sử dụng tính năng này nếu có thể.

py_runtime

Xem nguồn quy tắc
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)
Biểu thị môi trường thời gian chạy Python dùng để thực thi mã Python. Mục tiêu "py_runtime" có thể đại diện cho một *thời gian chạy nền tảng* hoặc một *trong bản dựng thời gian chạy*. Môi trường thời gian chạy nền tảng truy cập vào trình thông dịch do hệ thống cài đặt tại một đường dẫn đã biết, trong khi môi trường thời gian chạy tích hợp lại trỏ đến một mục tiêu có thể thực thi đóng vai trò là trình thông dịch. Trong cả hai trường hợp, "người phiên dịch" nghĩa là bất kỳ tệp nhị phân hoặc tệp có thể thực thi nào tập lệnh trình bao bọc có khả năng chạy tập lệnh Python được truyền vào lệnh , theo các quy ước tương tự như trình biên dịch CPython tiêu chuẩn. Về bản chất, môi trường thời gian chạy của nền tảng là không gián đoạn. Tệp này đưa ra yêu cầu đối với nền tảng mục tiêu là phải có trình thông dịch nằm ở một đường dẫn cụ thể. Môi trường thời gian chạy tích hợp có thể kín hoặc không kín, tuỳ thuộc vào việc môi trường đó trỏ đến trình thông dịch đã kiểm tra hay tập lệnh trình bao bọc truy cập vào trình thông dịch hệ thống. Ví dụ: ``` tải("@rules_python//python:py_runtime.bzl", "py_runtime") py_runtime( tên = "python-2.7.12", tệp = glob(["python-2.7.12/**"]), thông dịch viên = "python-2.7.12/bin/python", ) py_runtime( tên = "python-3.6.0", phiên dịch_path = "/opt/pyenv/versions/3.6.0/bin/python", ) ```

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

bootstrap_template

Nhãn; mặc định là "@rules_python//python/private:bootstrap_template"

Tệp mẫu tập lệnh Tự thân khởi nghiệp cần sử dụng. Cần có %python_binary%, %workspace_name%, %main% và %imports%. Sau khi mở rộng, mẫu này sẽ trở thành tệp thực thi dùng để bắt đầu quá trình, vì vậy, mẫu này chịu trách nhiệm cho các thao tác khởi động ban đầu như tìm trình thông dịch Python, tệp chạy và tạo môi trường để chạy ứng dụng Python dự định. Mặc dù hiện tại thuộc tính này là không bắt buộc, nhưng thuộc tính này sẽ trở thành bắt buộc khi các quy tắc Python được di chuyển ra khỏi chính Bazel. Tên biến chính xác được mở rộng là một API không ổn định và có thể thay đổi. API sẽ trở nên ổn định hơn khi các quy tắc Python được chuyển ra khỏi chính Bazel. Hãy xem @bazel_tools//tools/python:python_bootstrap_template.txt để biết thêm biến.
coverage_tool

Nhãn; mặc định là None

Đây là mục tiêu để thu thập thông tin về mức độ sử dụng mã từ các mục tiêu {rule}`py_binary` và {rule}`py_test`. Nếu được đặt, mục tiêu phải tạo một tệp duy nhất hoặc là một mục tiêu có thể thực thi. Đường dẫn đến một tệp hoặc tệp thực thi nếu mục tiêu là tệp thực thi, xác định điểm truy cập cho công cụ đo lường mức độ sử dụng python. Mục tiêu và các tệp runfile sẽ được thêm vào các tệp runfile khi bạn bật mức độ sử dụng. Điểm truy cập cho công cụ này phải tải được bằng trình thông dịch Python (ví dụ: .py` hoặc.pyc`). Hàm này phải chấp nhận các đối số dòng lệnh trong [`Coverage.py`](https://Coverage.readthedocs.io), ít nhất là bao gồm các lệnh con "run" và "lcov".
files

Danh sách nhãn; giá trị mặc định là []

Đối với môi trường thời gian chạy đang được tạo bản dựng, đây là tập hợp các tệp tạo nên thời gian chạy này. Các tệp này sẽ được thêm vào các tệp runfile của tệp nhị phân Python sử dụng thời gian chạy. Đối với thời gian chạy nền tảng, bạn không được đặt thuộc tính này.
implementation_name

String; giá trị mặc định là ""

Tên phương thức triển khai Python (`sys.implementation.name`)
interpreter

Nhãn; mặc định là None

Đối với thời gian chạy đang được tạo bản dựng, đây là mục tiêu để gọi làm trình thông dịch. Nó có thể là một trong những cách sau: * Một tệp, sẽ là tệp nhị phân của phiên dịch. Giả sử các trình thông dịch như vậy là các tệp thực thi tệp đơn độc độc lập hoặc bất kỳ tệp hỗ trợ nào được chỉ định trong "tệp". * Một mục tiêu thực thi. Tệp thực thi của mục tiêu sẽ là tệp nhị phân của trình thông dịch. Mọi đầu ra mặc định khác ("target.files`) và các tệp runfile của tệp thuần tuý (`runfiles.files`) sẽ tự động được đưa vào như được chỉ định trong Thuộc tính "tệp". LƯU Ý: các tệp runfile của mục tiêu có thể chưa được tôn trọng/truyền tải đúng cách đến người tiêu dùng của chuỗi công cụ/trình giao dịch, hãy xem bazelbuild/rules_python/issues/1612 Đối với thời gian chạy nền tảng (tức là bạn đang đặt "interpreter_path"), thuộc tính này phải chưa được thiết lập.
interpreter_path

Chuỗi; mặc định là ""

Đối với thời gian chạy nền tảng, đây là đường dẫn tuyệt đối của trình thông dịch Python trên nền tảng mục tiêu. Đối với thời gian chạy tích hợp, bạn không được đặt thuộc tính này.
interpreter_version_info

Từ điển: Chuỗi -> Chuỗi; mặc định là {}

Thông tin phiên bản về trình phiên dịch trong môi trường thời gian chạy này cung cấp. Nếu không được chỉ định, hãy sử dụng {obj}`--python_version` Các khoá được hỗ trợ khớp với tên của "sys.version_info". Trong khi phương thức nhập các giá trị là chuỗi, hầu hết được chuyển đổi thành số nguyên. Các khoá được hỗ trợ là: * major: int, số phiên bản chính * minor: int, số phiên bản phụ * micro: int không bắt buộc, số phiên bản vi * releaselevel: str không bắt buộc, cấp phát hành * serial: int không bắt buộc, số sê-ri của bản phát hành :::{versionchanged} 0.36.0 {obj}`--python_version` xác định giá trị mặc định. :::
pyc_tag

Chuỗi; mặc định là ""

Chuỗi không bắt buộc; phần thẻ của tên tệp pyc, ví dụ: bản sửa lỗi "cpython-39" của "foo.cpython-39.pyc". Xem PEP 3147. Nếu không được chỉ định, giá trị này sẽ được tính toán từ "implementation_name" và "interpreter_version_info". Nếu không có thẻ pyc nào, thì chỉ việc tạo pyc không có nguồn mới hoạt động đúng cách.
python_version

Chuỗi; mặc định là "PY3"

Liệu thời gian chạy này có dành cho Python phiên bản lớn 2 hay 3 hay không. Các giá trị hợp lệ là `"PY2"` và ""PY3"". Giá trị mặc định được kiểm soát bởi cờ "--incompatible_py3_is_default". Tuy nhiên, trong tương lai, thuộc tính này sẽ là thuộc tính bắt buộc và sẽ không có giá trị mặc định giá trị.
stage2_bootstrap_template

Nhãn; mặc định là "@rules_python//python/private:stage2_bootstrap_template"

Mẫu để sử dụng khi chế độ tự động khởi động hai giai đoạn đang bật :::{seealso} {obj}`PyRuntimeInfo.stage2_bootstrap_template` và {obj}`--bootstrap_impl` :::
stub_shebang

Chuỗi; mặc định là "#!/usr/bin/env python3"

Biểu thức "Shebang" được thêm vào tập lệnh giả lập Python khởi động dùng khi thực thi các mục tiêu {rule}`py_binary`. Truy cập https://github.com/bazelbuild/bazel/issues/8685 để động lực của bản thân. Không áp dụng cho Windows.
zip_main_template

Nhãn; giá trị mặc định là "@rules_python//python/private:zip_main_template"

Mẫu để sử dụng cho tệp "__main__.py" cấp cao nhất của tệp zip. Đây sẽ là điểm truy cập được thực thi khi chạy `python foo.zip`. :::{seealso} Trường {obj}`PyRuntimeInfo.zip_main_template`. :::