Список дополнительных библиотек, которые должны быть связаны с целевым объектом. См. комментарии о атрибуте [`deps` обычно определяемом правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Обычно это правила `py_library`. Цели, которые предоставляют только данные файлы, используемые во время выполнения, должны быть в атрибуте `data`.
Список файлов исходного кода Python, которые обрабатываются для создания целевого объекта. Это включает весь ваш проверенный код и может включать сгенерированные файлы исходного кода. Файлы с расширением `.py` должны быть в `srcs`, а целевые объекты библиотек - в `deps`. Другие двоичные файлы, которые могут потребоваться во время выполнения, должны быть в `data`.
Список файлов, необходимых этой библиотеке во время выполнения. См. комментарии о атрибуте [`data` обычно определяемом правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Нет `py_embed_data`, как есть `cc_embed_data` и `go_embed_data`. Это связано с тем, что Python имеет понятие о ресурсах во время выполнения.
imports
Список строк; значение по умолчанию []
Список каталогов импорта, которые должны быть добавлены в PYTHONPATH. Подлежит замене «Переменная make». Эти каталоги импорта будут добавлены для этого правила и для всех правил, которые зависят от него (примечание: не правила, от которых зависит это правило. Каждый каталог будет добавлен в `PYTHONPATH` правилами `py_binary`, которые зависят от этого правила. Строки относительны к корню repo-runfiles, Абсолютные пути (пути, начинающиеся с `/`) и пути, которые ссылаются на путь выше корня выполнения, недопустимы и приведут к ошибке.
legacy_create_init
Целое число; значение по умолчанию -1
Необходимо ли неявно создавать пустые файлы `__init__.py` в дереве runfiles. Они создаются в каждом каталоге, содержащем исходный код Python или общие библиотеки, и каждом родительском каталоге этих каталогов, за исключением каталога корня репозитория. Значение по умолчанию, `-1` (авто), равно true, если не используется `--incompatible_default_to_explicit_init_py`. Если ложно, пользователь отвечает за создание (возможно, пустых) файлов `__init__.py` и добавление их в `srcs` целевых объектов Python по мере необходимости.
Необязательно; имя файла исходного кода, являющегося основной точкой входа приложения. Этот файл также должен быть указан в `srcs`. Если не указано, используется `name`, с добавленным `.py`. Если `name` не соответствует ни одному имени файла в `srcs`, необходимо указать `main`.
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
Уровень оптимизации для предварительно скомпилированных файлов. Для получения дополнительной информации об уровнях оптимизации см. документацию к функции `compile()` по аргументу `optimize` по адресу 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 из зависимостей включаться вручную. Допустимые значения: * `inherit`: Унаследовать значение от {flag}`--precompile`. * `include_pyc`: Добавить неявно сгенерированные файлы pyc из зависимостей. т. е. файлы pyc для целей, которые задают {attr}`precompile="inherit"`. * `disabled`: Не добавлять неявно сгенерированные файлы pyc. Обратите внимание, что файлы pyc могут все еще поступать из зависимостей, которые включают предварительную компиляцию на уровне цели.
python_version
Строка; значение по умолчанию "PY3"
Устаревшее, не используется, не делает ничего.
srcs_version
Строка; значение по умолчанию "PY2AND3"
Устаревшее, не используется, не делает ничего.
stamp
Целое число; значение по умолчанию -1
Следует ли кодировать информацию о сборке в двоичный файл. Возможные значения: * `stamp = 1`: Всегда маркировать информацию о сборке в двоичный файл, даже в сборках `--nostamp`. **Этот параметр следует избегать**, поскольку он потенциально убивает кэширование удаленных данных для двоичного файла и любых последующих действий, которые зависят от него. * `stamp = 0`: Всегда заменять информацию о сборке константными значениями. Это обеспечивает хороший кэш результатов сборки. * `stamp = -1`: Вставка информации о сборке управляется флагом `--[no]stamp`. Маркированные двоичные файлы не перестраиваются, если не изменились их зависимости. ПРЕДУПРЕЖДЕНИЕ: Маркировка может навредить производительности сборки, уменьшая попадания в кэш, и следует избегать, если это возможно.
Библиотека кода Python, на которую можно ссылаться. Значения по умолчанию для вывода: * Исходные файлы Python * Предварительно скомпилированные артефакты из исходных файлов. ПРИМЕЧАНИЕ. Предварительная компиляция влияет на то, какие из значений вывода по умолчанию включены в результирующие runfiles. См. атрибуты и флаги, относящиеся к предварительной компиляции, для получения дополнительной информации. :::{versionchanged} 0.37.0 Файлы исходного кода больше не добавляются непосредственно в runfiles. :::
Список дополнительных библиотек, которые необходимо связать с целью. См. комментарии к атрибуту [`deps` обычно определяемому правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Обычно это правила `py_library`. Цели, которые предоставляют только файлы данных, используемые во время выполнения, должны быть в атрибуте `data`.
Список файлов исходного кода Python, которые обрабатываются для создания цели. Это включает весь ваш проверенный код и может включать сгенерированные файлы исходного кода. Файлы `.py` должны находиться в `srcs`, а цели библиотек — в `deps`. Другие двоичные файлы, которые могут потребоваться во время выполнения, должны находиться в `data`.
Список файлов, необходимых этой библиотеке во время выполнения. См. комментарии к атрибуту [`data` обычно определяемому правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Нет `py_embed_data`, как есть `cc_embed_data` и `go_embed_data`. Это потому, что Python имеет понятие ресурсов времени выполнения.
imports
Список строк; значение по умолчанию []
Список каталогов импорта, которые необходимо добавить в PYTHONPATH. Подлежит замене «Переменной-сделать». Эти каталоги импорта будут добавлены для этого правила и для всех правил, которые зависят от него (обратите внимание: не от правил, от которых зависит это правило. Каждый каталог будет добавлен в `PYTHONPATH` правилами `py_binary`, которые зависят от этого правила. Строки относительны к корню repo-runfiles. Абсолютные пути (пути, начинающиеся с `/`), и пути, которые ссылаются на путь выше корня выполнения, не допускаются и приведут к ошибке.
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.
Список дополнительных библиотек, подключаемых к целевому объекту. См. комментарии об атрибуте [`deps` обычно определяемом правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Обычно это правила `py_library`. Целевые объекты, которые предоставляют только файлы данных, используемые во время выполнения, должны быть в атрибуте `data`.
Список файлов исходного кода Python, обрабатываемых для создания целевого объекта. Включает весь ваш проверенный код и может включать сгенерированные файлы исходного кода. Файлы с расширением `.py` должны находиться в `srcs`, а целевые объекты библиотек — в `deps`. Другие двоичные файлы, которые могут потребоваться во время выполнения, должны находиться в `data`.
Список файлов, необходимых этой библиотеке во время выполнения. См. комментарии об атрибуте [`data` обычно определяемом правилами](https://bazel.build/reference/be/common-definitions#typical-attributes). Нет `py_embed_data`, как есть `cc_embed_data` и `go_embed_data`. Это связано с тем, что Python имеет понятие ресурсов времени выполнения.
imports
Список строк; значение по умолчанию []
Список каталогов импорта, которые должны быть добавлены в PYTHONPATH. Подлежит замене переменной "Make variable". Эти каталоги импорта будут добавлены для этого правила и всех правил, зависящих от него (примечание: не правила, от которых зависит это правило. Каждый каталог будет добавлен в `PYTHONPATH` правилами `py_binary`, которые зависят от этого правила. Строки относительны к корню repo-runfiles. Абсолютные пути (пути, начинающиеся с `/`) и пути, ссылающиеся на путь выше корня выполнения, запрещены и приведут к ошибке.
legacy_create_init
Целое число; значение по умолчанию -1
Указывает, нужно ли неявно создавать пустые файлы `__init__.py` в дереве runfiles. Они создаются в каждом каталоге, содержащем Python-исходники или общие библиотеки, и каждом родительском каталоге этих каталогов, за исключением корневого каталога хранилища. Значение по умолчанию `-1` (авто) означает true, если не используется `--incompatible_default_to_explicit_init_py`. Если false, пользователь отвечает за создание (возможно, пустых) файлов `__init__.py` и добавление их в `srcs` целевых объектов Python по мере необходимости.
Необязательно; имя файла исходного кода, являющегося основной точкой входа приложения. Этот файл также должен быть указан в `srcs`. Если не указано, используется `name` с добавленным `.py`. Если `name` не соответствует никакому имени файла в `srcs`, `main` необходимо указать.
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` означает "текущий интерпретатор", что будет интерпретатором, используемым _во время сборки, когда генерируются pycs_, а не интерпретатором, используемым во время выполнения, когда код фактически выполняется.
precompile_source_retention
Строка; значение по умолчанию "inherit"
Определяет, когда исходный файл компилируется, сохраняется ли исходный файл в результирующем выводе или нет. Допустимые значения: * `inherit`: Унаследовать значение из флага {flag}`--precompile_source_retention`. * `keep_source`: Включить исходный Python-исходник. * `omit_source`: Не включать исходный py-исходник.
pyc_collection
Строка; значение по умолчанию "inherit"
Определяет, должны ли файлы pyc из зависимостей включаться вручную. Допустимые значения: * `inherit`: Унаследовать значение из {flag}`--precompile`. * `include_pyc`: Добавить неявно сгенерированные файлы pyc из зависимостей. т.е. файлы pyc для целей, которые указывают {attr}`precompile="inherit"`. * `disabled`: Не добавлять неявно сгенерированные файлы pyc. Обратите внимание, что файлы pyc могут всё ещё поступать из зависимостей, которые включают предварительную компиляцию на уровне целевого объекта.
python_version
Строка; значение по умолчанию "PY3"
Устаревшее, неиспользуемое, ничего не делает.
srcs_version
Строка; значение по умолчанию "PY2AND3"
Устаревшее, неиспользуемое, ничего не делает.
stamp
Целое число; значение по умолчанию 0
Нужно ли кодировать информацию о сборке в двоичный файл. Возможные значения: * `stamp = 1`: Всегда вставлять информацию о сборке в двоичный файл, даже в сборках `--nostamp`. **Этот параметр следует избегать**, так как он потенциально убивает кэширование удалённых библиотек для двоичного файла и любых последующих действий, зависящих от него. * `stamp = 0`: Всегда заменять информацию о сборке постоянными значениями. Это даёт хорошую кэширование результатов сборки. * `stamp = -1`: Вставка информации о сборке контролируется флагом `--[no]stamp`. Отмеченные двоичные файлы не перестраиваются, если не меняются их зависимости. ПРЕДУПРЕЖДЕНИЕ: Вставка может навредить производительности сборки, уменьшая попадания в кэш, и её следует избегать, если это возможно.
Представляет собой Python-среду выполнения, используемую для выполнения Python-кода. Целевой объект `py_runtime` может представлять либо *платформенную среду выполнения*, либо *встроенную среду выполнения*. Платформенная среда выполнения обращается к установленной в системе интерпретатору по известному пути, тогда как встроенная среда выполнения указывает на целевой исполняемый файл, который действует как интерпретатор. В обоих случаях "интерпретатор" означает любой исполняемый двоичный файл или оболочку скрипта, способный запускать Python-скрипт, переданный в командной строке, следуя тем же соглашениям, что и стандартный интерпретатор CPython. Платформенная среда выполнения по своей природе негерметична. Она налагает требование к целевой платформе иметь интерпретатор, расположенный по указанному пути. Встроенная среда выполнения может быть или не быть герметичной, в зависимости от того, указывает ли она на проверенный интерпретатор или оболочку скрипта, которая обращается к интерпретатору системы. Пример ``` 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", ) ```
Флаги ABI среды выполнения, т.е. `sys.abiflags`. Если не установлены, они будут установлены на основе флагов.
bootstrap_template
Метка; значение по умолчанию "@rules_python//python/private:bootstrap_template"
Шаблон файла скрипта загрузки. Должен содержать %python_binary%, %workspace_name%, %main%, и %imports%. Этот шаблон после расширения становится исполняемым файлом, используемым для запуска процесса, поэтому он отвечает за первоначальные действия загрузки, такие как поиск интерпретатора Python, runfiles и создание среды для выполнения целевого приложения Python. Хотя этот атрибут в настоящее время является необязательным, он станет обязательным, когда правила Python будут перемещены из самого Bazel. Точные имена переменных, которые расширяются, — это API, нестабильный API, и он может измениться. API станет более стабильным, когда правила Python будут перемещены из самого Bazel. См. @bazel_tools//tools/python:python_bootstrap_template.txt для получения дополнительных переменных.
Это целевой объект для сбора информации о покрытии кода из целевых объектов {rule}`py_binary` и {rule}`py_test`. Если установлен, объект должен генерировать один файл или быть исполняемым объектом. Путь к единственному файлу или исполняемому файлу (если объект исполняемый) определяет точку входа для инструментария покрытия Python. Целевой объект и его runfiles будут добавлены в runfiles при включении покрытия. Точка входа для инструментария должна загружаться интерпретатором Python (например, файл `.py` или `.pyc`). Он должен принимать командные аргументы [`coverage.py`](https://coverage.readthedocs.io), по крайней мере, включая подкоманды `run` и `lcov`.
Для встроенной среды выполнения это набор файлов, составляющих эту среду выполнения. Эти файлы будут добавлены в runfiles бинарных файлов Python, использующих эту среду выполнения. Для платформенной среды выполнения этот атрибут не должен быть установлен.
Для встроенной среды выполнения это целевой объект для вызова в качестве интерпретатора. Это может быть: * Один файл, который будет исполняемым файлом интерпретатора. Предполагается, что такие интерпретаторы являются самодостаточными исполняемыми файлами из одного файла, или все поддерживающие файлы указаны в атрибуте `files`. * Исполняемый целевой объект. Исполняемый файл целевого объекта будет исполняемым файлом интерпретатора. Любые другие выходные файлы по умолчанию (`target.files`) и обычные файлы runfiles (`runfiles.files`) будут автоматически включены так, как если бы они были указаны в атрибуте `files`. ПРИМЕЧАНИЕ. runfiles целевого объекта могут еще не быть должным образом учтены/распространены потребителями цепочки инструментов/интерпретатора, см. bazelbuild/rules_python/issues/1612 Для платформенной среды выполнения (т.е. `interpreter_path` установлен) этот атрибут не должен быть установлен.
interpreter_path
Строка; значение по умолчанию ""
Для платформенной среды выполнения это абсолютный путь к интерпретатору Python на целевой платформе. Для встроенной среды выполнения этот атрибут не должен быть установлен.
interpreter_version_info
Словарь: Строка -> Строка; значение по умолчанию {}
Сведения о версии интерпретатора, предоставляемого этой средой выполнения. Если не указано, используется {obj}`--python_version`. Поддерживаемые ключи соответствуют именам `sys.version_info`. Хотя входные значения являются строками, большинство из них преобразуются в целые числа. Поддерживаемые ключи: * major: целое число, номер основной версии * minor: целое число, номер дополнительной версии * micro: необязательное целое число, номер микроверсии * releaselevel: необязательная строка, уровень выпуска * serial: необязательное целое число, номер версии выпуска :::{versionchanged} 0.36.0 {obj}`--python_version` определяет значение по умолчанию. :::
pyc_tag
Строка; значение по умолчанию ""
Необязательная строка; тег части имени файла pyc, например, префикс `cpython-39` в `foo.cpython-39.pyc`. См. PEP 3147. Если не указано, он будет вычислен из `implementation_name` и `interpreter_version_info`. Если тег pyc недоступен, тогда только генерация pyc без исходного кода будет работать правильно.
python_version
Строка; значение по умолчанию "PY3"
Версия Python (2 или 3), для которой предназначена эта среда выполнения. Допустимые значения — `"PY2"` и `"PY3"`. Значение по умолчанию контролируется флагом `--incompatible_py3_is_default`. Однако в будущем этот атрибут будет обязательным и не будет иметь значения по умолчанию.
stage2_bootstrap_template
Метка; значение по умолчанию "@rules_python//python/private:stage2_bootstrap_template"
Шаблон для использования при включенном двухэтапном запуске :::{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`. :::