Python 규칙

문제 신고 소스 보기 나이틀리 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

규칙

py_binary

규칙 소스 보기
py_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, interpreter_args, legacy_create_init, licenses, main, main_module, output_licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)

인수

속성
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)에 관한 의견을 참고하세요. `cc_embed_data` 및 `go_embed_data` 와 같은 `py_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` (auto)은 `--incompatible_default_to_explicit_init_py` 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 필요에 따라 `__init__.py` 파일 (비어 있을 수 있음)을 만들고 Python 타겟의 `srcs` 에 추가해야 합니다.
main

라벨: 기본값은 None입니다.

선택사항입니다. 애플리케이션의 기본 진입점인 소스 파일의 이름입니다. 이 파일은 `srcs`에도 나열되어야 합니다. 지정하지 않으면 `.py`가 추가된 `name` 이 대신 사용됩니다. `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입니다.

사전 컴파일된 파일의 최적화 수준입니다. 최적화 수준에 관한 자세한 내용은 https://docs.python.org/3/library/functions.html#compile의 `compile()` 함수 `optimize` arg 문서를 참고하세요. 참고: 값 `-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 파일을 추가합니다. 즉, {attr}`precompile="inherit"`를 지정하는 타겟의 pyc 파일입니다. * `disabled`: 암시적으로 생성된 pyc 파일을 추가하지 않습니다. pyc 파일은 타겟 수준에서 사전 컴파일을 사용 설정하는 종속 항목에서 여전히 가져올 수 있습니다.
pyi_deps

라벨 목록입니다. 기본값은 []입니다.

라이브러리에 필요한 유형 정의를 제공하는 종속 항목입니다. `typing.TYPE_CHECKING`으로 보호되는 가져오기를 충족하는 종속 항목입니다. 이는 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수 있음). :::{versionadded} 1.1.0 :::
pyi_srcs

라벨 목록입니다. 기본값은 []입니다.

라이브러리의 유형 정의 파일입니다. 일반적으로 `.pyi` 파일이지만 유형 검사기별 형식의 다른 파일 형식도 허용됩니다. 이러한 파일은 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수는 있음). :::{versionadded} 1.1.0 :::
python_version

문자열, 기본값은 ""입니다.

이 타겟이 사용해야 하는 Python 버전입니다. 값은 `X.Y` 또는 `X.Y.Z` (또는 호환되는) 형식이어야 합니다. 비어 있거나 지정되지 않은 경우 수신 구성의 {obj}`--python_version` 플래그가 상속됩니다. 이전 버전과의 호환성을 위해 `PY2` 및 `PY3` 값이 허용되지만 빈 값/지정되지 않은 값으로 처리됩니다. ::: 요청된 버전을 사용하려면 Python 버전과 일치하도록 구성된 도구 모음이 있어야 합니다. 없으면 툴체인 구성에 따라 무시되거나 오류가 발생할 수 있습니다. ::: :::{versionchanged} 1.1.0 이 속성은 `PY2` 및 `PY3` 값만 허용하는 것에서 임의의 Python 버전을 허용하도록 변경되었습니다. :::
srcs_version

문자열, 기본값은 ""입니다.

사용되지 않으며 아무 작업도 수행하지 않습니다.
stamp

정수이며 기본값은 -1입니다.

빌드 정보를 바이너리에 인코딩할지 여부입니다. 가능한 값은 다음과 같습니다. * `stamp = 1`: `--nostamp` 빌드에서도 항상 빌드 정보를 바이너리에 스탬프합니다. 바이너리 및 바이너리에 종속된 다운스트림 작업의 원격 캐싱을 잠재적으로 중단하므로 **이 설정은 피해야 합니다**. * `stamp = 0`: 항상 빌드 정보를 상수 값으로 바꿉니다. 이렇게 하면 빌드 결과 캐싱이 잘 됩니다. * `stamp = -1`: 빌드 정보의 삽입은 `--[no]stamp` 플래그로 제어됩니다. 스탬프가 찍힌 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다. 경고: 스탬프는 캐시 적중률을 줄여 빌드 성능을 저하시킬 수 있으므로 가능한 경우 피해야 합니다.

py_library

규칙 소스 보기
py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyi_deps, pyi_srcs, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
종속될 수 있는 Python 코드 라이브러리입니다. 기본 출력: * 입력 Python 소스 * 소스에서 사전 컴파일된 아티팩트 참고: 사전 컴파일은 결과 런파일에 포함되는 기본 출력에 영향을 미칩니다. 자세한 내용은 사전 컴파일 관련 속성 및 플래그를 참고하세요. :::{versionchanged} 0.37.0 소스 파일이 더 이상 runfile에 직접 추가되지 않습니다. :::

인수

속성
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)에 관한 의견을 참고하세요. `cc_embed_data` 및 `go_embed_data` 와 같은 `py_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입니다.

사전 컴파일된 파일의 최적화 수준입니다. 최적화 수준에 관한 자세한 내용은 https://docs.python.org/3/library/functions.html#compile의 `compile()` 함수 `optimize` arg 문서를 참고하세요. 참고: 값 `-1` 은 '현재 인터프리터'를 의미하며, 이는 pyc가 생성될 때 _빌드 시간에 사용되는_ 인터프리터이지 코드가 실제로 실행될 때 런타임에 사용되는 인터프리터가 아닙니다.
precompile_source_retention

문자열, 기본값은 "inherit"입니다.

소스 파일이 컴파일될 때 소스 파일이 결과 출력에 유지되는지 여부를 결정합니다. 유효한 값은 다음과 같습니다. * `inherit`: {flag}`--precompile_source_retention` 플래그에서 값을 상속합니다. * `keep_source`: 원래 Python 소스를 포함합니다. * `omit_source`: 원래 py 소스를 포함하지 않습니다.
pyi_deps

라벨 목록입니다. 기본값은 []입니다.

라이브러리에 필요한 유형 정의를 제공하는 종속 항목입니다. `typing.TYPE_CHECKING`으로 보호되는 가져오기를 충족하는 종속 항목입니다. 이는 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수 있음). :::{versionadded} 1.1.0 :::
pyi_srcs

라벨 목록입니다. 기본값은 []입니다.

라이브러리의 유형 정의 파일입니다. 일반적으로 `.pyi` 파일이지만 유형 검사기별 형식의 다른 파일 형식도 허용됩니다. 이러한 파일은 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수는 있음). :::{versionadded} 1.1.0 :::
srcs_version

문자열, 기본값은 ""입니다.

사용되지 않으며 아무 작업도 수행하지 않습니다.

py_test

규칙 소스 보기
py_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, imports, interpreter_args, legacy_create_init, licenses, local, main, main_module, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

인수

속성
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)에 관한 의견을 참고하세요. `cc_embed_data` 및 `go_embed_data` 와 같은 `py_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` (auto)은 `--incompatible_default_to_explicit_init_py` 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 필요에 따라 `__init__.py` 파일 (비어 있을 수 있음)을 만들고 Python 타겟의 `srcs` 에 추가해야 합니다.
main

라벨: 기본값은 None입니다.

선택사항입니다. 애플리케이션의 기본 진입점인 소스 파일의 이름입니다. 이 파일은 `srcs`에도 나열되어야 합니다. 지정하지 않으면 `.py`가 추가된 `name` 이 대신 사용됩니다. `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입니다.

사전 컴파일된 파일의 최적화 수준입니다. 최적화 수준에 관한 자세한 내용은 https://docs.python.org/3/library/functions.html#compile의 `compile()` 함수 `optimize` arg 문서를 참고하세요. 참고: 값 `-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 파일을 추가합니다. 즉, {attr}`precompile="inherit"`를 지정하는 타겟의 pyc 파일입니다. * `disabled`: 암시적으로 생성된 pyc 파일을 추가하지 않습니다. pyc 파일은 타겟 수준에서 사전 컴파일을 사용 설정하는 종속 항목에서 여전히 가져올 수 있습니다.
pyi_deps

라벨 목록입니다. 기본값은 []입니다.

라이브러리에 필요한 유형 정의를 제공하는 종속 항목입니다. `typing.TYPE_CHECKING`으로 보호되는 가져오기를 충족하는 종속 항목입니다. 이는 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수 있음). :::{versionadded} 1.1.0 :::
pyi_srcs

라벨 목록입니다. 기본값은 []입니다.

라이브러리의 유형 정의 파일입니다. 일반적으로 `.pyi` 파일이지만 유형 검사기별 형식의 다른 파일 형식도 허용됩니다. 이러한 파일은 빌드 시간 전용 종속 항목이며 실행 가능한 프로그램의 일부로 포함되지 않습니다 (패키징 규칙에 포함될 수는 있음). :::{versionadded} 1.1.0 :::
python_version

문자열, 기본값은 ""입니다.

이 타겟이 사용해야 하는 Python 버전입니다. 값은 `X.Y` 또는 `X.Y.Z` (또는 호환되는) 형식이어야 합니다. 비어 있거나 지정되지 않은 경우 수신 구성의 {obj}`--python_version` 플래그가 상속됩니다. 이전 버전과의 호환성을 위해 `PY2` 및 `PY3` 값이 허용되지만 빈 값/지정되지 않은 값으로 처리됩니다. ::: 요청된 버전을 사용하려면 Python 버전과 일치하도록 구성된 도구 모음이 있어야 합니다. 없으면 툴체인 구성에 따라 무시되거나 오류가 발생할 수 있습니다. ::: :::{versionchanged} 1.1.0 이 속성은 `PY2` 및 `PY3` 값만 허용하는 것에서 임의의 Python 버전을 허용하도록 변경되었습니다. :::
srcs_version

문자열, 기본값은 ""입니다.

사용되지 않으며 아무 작업도 수행하지 않습니다.
stamp

정수이며 기본값은 0입니다.

빌드 정보를 바이너리에 인코딩할지 여부입니다. 가능한 값은 다음과 같습니다. * `stamp = 1`: `--nostamp` 빌드에서도 항상 빌드 정보를 바이너리에 스탬프합니다. 바이너리 및 바이너리에 종속된 다운스트림 작업의 원격 캐싱을 잠재적으로 중단하므로 **이 설정은 피해야 합니다**. * `stamp = 0`: 항상 빌드 정보를 상수 값으로 바꿉니다. 이렇게 하면 빌드 결과 캐싱이 잘 됩니다. * `stamp = -1`: 빌드 정보의 삽입은 `--[no]stamp` 플래그로 제어됩니다. 스탬프가 찍힌 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다. 경고: 스탬프는 캐시 적중률을 줄여 빌드 성능을 저하시킬 수 있으므로 가능한 경우 피해야 합니다.

py_runtime

규칙 소스 보기
py_runtime(name, abi_flags, bootstrap_template, compatible_with, coverage_tool, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, package_metadata, pyc_tag, python_version, restricted_to, site_init_template, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
Python 코드를 실행하는 데 사용되는 Python 런타임을 나타냅니다. `py_runtime` 타겟은 *플랫폼 런타임* 또는 *빌드 내 런타임*을 나타낼 수 있습니다. 플랫폼 런타임은 알려진 경로에서 시스템 설치 인터프리터에 액세스하는 반면, 빌드 내 런타임은 인터프리터 역할을 하는 실행 파일 타겟을 가리킵니다. 두 경우 모두 '인터프리터'는 표준 CPython 인터프리터와 동일한 규칙에 따라 명령줄에 전달된 Python 스크립트를 실행할 수 있는 실행 가능한 바이너리 또는 래퍼 스크립트를 의미합니다. 플랫폼 런타임은 본질적으로 비밀폐형입니다. 타겟 플랫폼이 특정 경로에 인터프리터를 갖도록 요구합니다. 인빌드 런타임은 체크인된 인터프리터 또는 시스템 인터프리터에 액세스하는 래퍼 스크립트를 가리키는지에 따라 hermetic일 수도 있고 아닐 수도 있습니다. 예 ``` 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", ) ```

인수

속성
name

이름: 필수

이 타겟의 고유한 이름입니다.

abi_flags

문자열, 기본값은 ""입니다.

런타임의 ABI 플래그입니다(예: `sys.abiflags`). 설정되지 않은 경우 플래그에 따라 설정됩니다.
bootstrap_template

라벨: 기본값은 "@rules_python//python/private:bootstrap_template"입니다.

사용할 부트스트랩 스크립트 템플릿 파일입니다. %python_binary%, %workspace_name%, %main%, %imports%가 있어야 합니다. 이 템플릿은 확장 후 프로세스를 시작하는 데 사용되는 실행 파일이 되므로 Python 인터프리터와 runfile을 찾고 의도한 Python 애플리케이션을 실행할 환경을 구성하는 등의 초기 부트스트랩 작업을 담당합니다. 이 속성은 현재 선택사항이지만 Python 규칙이 Bazel 자체에서 이동되면 필수사항이 됩니다. 확장된 정확한 변수 이름은 불안정한 API이며 변경될 수 있습니다. Python 규칙이 Bazel 자체에서 이동되면 API가 더 안정화됩니다. 변수에 대한 자세한 내용은 @bazel_tools//tools/python:python_bootstrap_template.txt를 참고하세요.
coverage_tool

라벨: 기본값은 None입니다.

{rule}`py_binary` 및 {rule}`py_test` 타겟에서 코드 커버리지 정보를 수집하는 데 사용할 타겟입니다. 설정된 경우 타겟은 단일 파일을 생성하거나 실행 가능한 타겟이어야 합니다. 단일 파일의 경로 또는 타겟이 실행 파일인 경우 실행 파일은 Python 커버리지 도구의 진입점을 결정합니다. 타겟과 실행 파일은 커버리지가 사용 설정되면 실행 파일에 추가됩니다. 도구의 진입점은 Python 인터프리터 (예: `.py` 또는 `.pyc` 파일)로 로드할 수 있어야 합니다. 최소한 `run` 및 `lcov` 하위 명령어를 포함하여 [`coverage.py`](https://coverage.readthedocs.io)의 명령줄 인수를 허용해야 합니다.
files

라벨 목록입니다. 기본값은 []입니다.

빌드 내 런타임의 경우 이 런타임을 구성하는 파일 집합입니다. 이러한 파일은 이 런타임을 사용하는 Python 바이너리의 runfile에 추가됩니다. 플랫폼 런타임의 경우 이 속성을 설정하면 안 됩니다.
implementation_name

문자열, 기본값은 "cpython"입니다.

Python 구현 이름 (`sys.implementation.name`)
interpreter

라벨: 기본값은 None입니다.

빌드 내 런타임의 경우 인터프리터로 호출할 타겟입니다. 다음 중 하나일 수 있습니다. * 단일 파일(인터프리터 바이너리) 이러한 인터프리터는 자체 포함된 단일 파일 실행 파일이거나 지원 파일이 `files`에 지정되어 있다고 가정합니다. * 실행 파일 타겟 타겟의 실행 파일은 인터프리터 바이너리가 됩니다. 다른 모든 기본 출력 (`target.files`)과 일반 파일 runfile(`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 파일 이름의 태그 부분입니다. 예를 들어 `foo.cpython-39.pyc` 의 `cpython-39` 인픽스입니다. 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"입니다.

시작 시 인터프리터가 실행하는 바이너리별 site-init 후크에 사용할 템플릿입니다. :::{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"입니다.

{rule}`py_binary` 타겟을 실행할 때 사용되는 부트스트랩 Python 스텁 스크립트에 추가되는 'shebang' 표현식입니다. 동기는 https://github.com/bazelbuild/bazel/issues/8685를 참고하세요. Windows에는 적용되지 않습니다.
zip_main_template

라벨: 기본값은 "@rules_python//python/private:zip_main_template"입니다.

zip의 최상위 `__main__.py` 파일에 사용할 템플릿입니다. 이 파일은 `python foo.zip` 이 실행될 때 실행되는 진입점이 됩니다. ::{seealso} {obj}`PyRuntimeInfo.zip_main_template` 필드 :::