문제 신고open_in_new
소스 보기open_in_new
Nightly
·
7.4
.
7.3
·
7.2
·
7.1
·
7.0
·
6.5
규칙
py_binary
규칙 소스 보기open_in_new
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)
인수
속성 |
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에 런타임 리소스 개념이 있기 때문입니다.
|
imports
|
문자열 목록입니다. 기본값은 [] 입니다.
PYTHONPATH에 추가할 가져오기 디렉터리의 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이러한 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙에 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된 `py_binary` 규칙에 의해 `PYTHONPATH` 에 추가됩니다. 문자열은 repo-runfiles-root 상대 경로이며,
절대 경로 (`/`로 시작하는 경로) 및 실행 루트 위의 경로를 참조하는 경로는 허용되지 않으며 오류가 발생합니다.
|
legacy_create_init
|
정수, 기본값은 -1
runfiles 트리에 빈 `__init__.py` 파일을 암시적으로 만들지 여부입니다.
이는 Python 소스 코드 또는 공유 라이브러리가 포함된 모든 디렉터리와 이러한 디렉터리의 모든 상위 디렉터리(저장소 루트 디렉터리 제외)에 생성됩니다. 기본값인 `-1` (자동)은 `--incompatible_default_to_explicit_init_py` 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 필요에 따라 빈 `__init__.py` 파일을 만들고 Python 타겟의 `srcs` 에 추가해야 합니다.
|
main
|
라벨: 기본값은 None 입니다.
선택사항. 애플리케이션의 기본 진입점인 소스 파일의 이름입니다. 이 파일은 `srcs`에도 나열되어야 합니다. 지정하지 않으면 `.py`가 추가된 `name` 이 대신 사용됩니다. `name` 이 `srcs`의 파일 이름과 일치하지 않으면 `main` 을 지정해야 합니다.
|
precompile
|
문자열, 기본값은 "inherit" 입니다.
**이 타겟의** py 소스 파일을 사전 컴파일해야 하는지 여부입니다.
값:
* `inherit`: {flag}`--precompile` 플래그에서 값을 결정합니다.
* `enabled`: 빌드 시간에 Python 소스 파일을 컴파일합니다. --precompile_add_to_runfiles는 컴파일된 파일이 다운스트림 바이너리에 포함되는 방식에 영향을 미칩니다.
* `disabled`: 빌드 시 Python 소스 파일을 컴파일하지 않습니다.
* `if_generated_source`: 생성된 파일인 경우에만 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` 인수 문서를 참고하세요.
참고: 값 `-1` 은 '현재 인터프리터'를 의미하며, 이는 _pycs가 생성될 때 빌드 시간에_ 사용되는 인터프리터가 아니라 코드가 실제로 실행될 때 런타임에 사용되는 인터프리터가 아닙니다.
|
precompile_source_retention
|
문자열, 기본값은 "inherit" 입니다.
소스 파일이 컴파일될 때 소스 파일이 결과 출력에 유지되는지 여부를 결정합니다. 유효한 값은 다음과 같습니다.
* `inherit`: {flag}`--precompile_source_retention` 플래그에서 값을 상속합니다.
* `keep_source`: 원본 Python 소스를 포함합니다.
* `omit_source`: 원래 py 소스를 포함하지 않습니다.
* `omit_if_generated_source`: 일반 소스 파일인 경우 원본 소스를 유지하고 생성된 파일인 경우 생략합니다.
|
pyc_collection
|
문자열, 기본값은 "inherit" 입니다.
종속 항목의 pyc 파일을 수동으로 포함해야 하는지 여부를 결정합니다.
참고: 이 설정은 {flag}`--precompile_add_to_runfiles=decided_elsewhere`에서만 유용합니다.
유효한 값은 다음과 같습니다.
* `inherit`: {flag}`--pyc_collection`에서 값을 상속합니다.
* `include_pyc`: 바이너리의 종속 항목에서 pyc 파일을 추가합니다({obj}`PyInfo.transitive_pyc_files`에서).
* `disabled`: 종속 항목에서 pyc 파일을 명시적으로 추가하지 않습니다. 타겟이 pyc 파일을 runfiles의 일부로 포함하는 경우 (예: {obj}`--precompile_add_to_runfiles=always` 사용 시) pyc 파일이 종속 항목에서 가져올 수 있습니다.
|
python_version
|
문자열, 기본값은 "PY3" 입니다.
더 이상 사용되지 않으며 아무 작업도 수행하지 않습니다.
|
srcs_version
|
문자열, 기본값은 "PY2AND3" 입니다.
더 이상 사용되지 않으며 아무 작업도 수행하지 않습니다.
|
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_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)
depend를 사용할 수 있는 Python 코드 라이브러리입니다.
기본 출력:
* 입력 Python 소스
* 소스의 사전 컴파일된 아티팩트
참고: 사전 컴파일은 결과 런파일에 포함되는 기본 출력에 영향을 미칩니다. 자세한 내용은 사전 컴파일 관련 속성 및 플래그를 참고하세요.
인수
속성 |
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에 런타임 리소스 개념이 있기 때문입니다.
|
imports
|
문자열 목록입니다. 기본값은 [] 입니다.
PYTHONPATH에 추가할 가져오기 디렉터리의 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이러한 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙에 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된 `py_binary` 규칙에 의해 `PYTHONPATH` 에 추가됩니다. 문자열은 repo-runfiles-root 상대 경로이며,
절대 경로 (`/`로 시작하는 경로) 및 실행 루트 위의 경로를 참조하는 경로는 허용되지 않으며 오류가 발생합니다.
|
precompile
|
문자열, 기본값은 "inherit" 입니다.
**이 타겟의** py 소스 파일을 사전 컴파일해야 하는지 여부입니다.
값:
* `inherit`: {flag}`--precompile` 플래그에서 값을 결정합니다.
* `enabled`: 빌드 시간에 Python 소스 파일을 컴파일합니다. --precompile_add_to_runfiles는 컴파일된 파일이 다운스트림 바이너리에 포함되는 방식에 영향을 미칩니다.
* `disabled`: 빌드 시 Python 소스 파일을 컴파일하지 않습니다.
* `if_generated_source`: 생성된 파일인 경우에만 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` 인수 문서를 참고하세요.
참고: 값 `-1` 은 '현재 인터프리터'를 의미하며, 이는 _pycs가 생성될 때 빌드 시간에_ 사용되는 인터프리터가 아니라 코드가 실제로 실행될 때 런타임에 사용되는 인터프리터가 아닙니다.
|
precompile_source_retention
|
문자열, 기본값은 "inherit" 입니다.
소스 파일이 컴파일될 때 소스 파일이 결과 출력에 유지되는지 여부를 결정합니다. 유효한 값은 다음과 같습니다.
* `inherit`: {flag}`--precompile_source_retention` 플래그에서 값을 상속합니다.
* `keep_source`: 원본 Python 소스를 포함합니다.
* `omit_source`: 원래 py 소스를 포함하지 않습니다.
* `omit_if_generated_source`: 일반 소스 파일인 경우 원본 소스를 유지하고 생성된 파일인 경우 생략합니다.
|
srcs_version
|
문자열, 기본값은 "PY2AND3" 입니다.
더 이상 사용되지 않으며 아무 작업도 수행하지 않습니다.
|
py_test
규칙 소스 보기open_in_new
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)
인수
속성 |
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에 런타임 리소스 개념이 있기 때문입니다.
|
imports
|
문자열 목록입니다. 기본값은 [] 입니다.
PYTHONPATH에 추가할 가져오기 디렉터리의 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이러한 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙에 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된 `py_binary` 규칙에 의해 `PYTHONPATH` 에 추가됩니다. 문자열은 repo-runfiles-root 상대 경로이며,
절대 경로 (`/`로 시작하는 경로) 및 실행 루트 위의 경로를 참조하는 경로는 허용되지 않으며 오류가 발생합니다.
|
legacy_create_init
|
정수, 기본값은 -1
runfiles 트리에 빈 `__init__.py` 파일을 암시적으로 만들지 여부입니다.
이는 Python 소스 코드 또는 공유 라이브러리가 포함된 모든 디렉터리와 이러한 디렉터리의 모든 상위 디렉터리(저장소 루트 디렉터리 제외)에 생성됩니다. 기본값인 `-1` (자동)은 `--incompatible_default_to_explicit_init_py` 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 필요에 따라 빈 `__init__.py` 파일을 만들고 Python 타겟의 `srcs` 에 추가해야 합니다.
|
main
|
라벨: 기본값은 None 입니다.
선택사항. 애플리케이션의 기본 진입점인 소스 파일의 이름입니다. 이 파일은 `srcs`에도 나열되어야 합니다. 지정하지 않으면 `.py`가 추가된 `name` 이 대신 사용됩니다. `name` 이 `srcs`의 파일 이름과 일치하지 않으면 `main` 을 지정해야 합니다.
|
precompile
|
문자열, 기본값은 "inherit" 입니다.
**이 타겟의** py 소스 파일을 사전 컴파일해야 하는지 여부입니다.
값:
* `inherit`: {flag}`--precompile` 플래그에서 값을 결정합니다.
* `enabled`: 빌드 시간에 Python 소스 파일을 컴파일합니다. --precompile_add_to_runfiles는 컴파일된 파일이 다운스트림 바이너리에 포함되는 방식에 영향을 미칩니다.
* `disabled`: 빌드 시 Python 소스 파일을 컴파일하지 않습니다.
* `if_generated_source`: 생성된 파일인 경우에만 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` 인수 문서를 참고하세요.
참고: 값 `-1` 은 '현재 인터프리터'를 의미하며, 이는 _pycs가 생성될 때 빌드 시간에_ 사용되는 인터프리터가 아니라 코드가 실제로 실행될 때 런타임에 사용되는 인터프리터가 아닙니다.
|
precompile_source_retention
|
문자열, 기본값은 "inherit" 입니다.
소스 파일이 컴파일될 때 소스 파일이 결과 출력에 유지되는지 여부를 결정합니다. 유효한 값은 다음과 같습니다.
* `inherit`: {flag}`--precompile_source_retention` 플래그에서 값을 상속합니다.
* `keep_source`: 원본 Python 소스를 포함합니다.
* `omit_source`: 원래 py 소스를 포함하지 않습니다.
* `omit_if_generated_source`: 일반 소스 파일인 경우 원본 소스를 유지하고 생성된 파일인 경우 생략합니다.
|
pyc_collection
|
문자열, 기본값은 "inherit" 입니다.
종속 항목의 pyc 파일을 수동으로 포함해야 하는지 여부를 결정합니다.
참고: 이 설정은 {flag}`--precompile_add_to_runfiles=decided_elsewhere`에서만 유용합니다.
유효한 값은 다음과 같습니다.
* `inherit`: {flag}`--pyc_collection`에서 값을 상속합니다.
* `include_pyc`: 바이너리의 종속 항목에서 pyc 파일을 추가합니다({obj}`PyInfo.transitive_pyc_files`에서).
* `disabled`: 종속 항목에서 pyc 파일을 명시적으로 추가하지 않습니다. 타겟이 pyc 파일을 runfiles의 일부로 포함하는 경우 (예: {obj}`--precompile_add_to_runfiles=always` 사용 시) pyc 파일이 종속 항목에서 가져올 수 있습니다.
|
python_version
|
문자열, 기본값은 "PY3" 입니다.
더 이상 사용되지 않으며 아무 작업도 수행하지 않습니다.
|
srcs_version
|
문자열, 기본값은 "PY2AND3" 입니다.
더 이상 사용되지 않으며 아무 작업도 수행하지 않습니다.
|
stamp
|
정수, 기본값은 0
빌드 정보를 바이너리로 인코딩할지 여부입니다. 가능한 값:
* `stamp = 1`: `--nostamp` 빌드에서도 항상 빌드 정보를 바이너리에 스탬프합니다. 바이너리 및 바이너리에 종속된 모든 다운스트림 작업의 원격 캐싱을 중단할 수 있으므로 **이 설정은 피해야 합니다**.
* `stamp = 0`: 항상 빌드 정보를 상수 값으로 바꿉니다. 이렇게 하면 빌드 결과 캐싱이 향상됩니다.
* `stamp = -1`: 빌드 정보 삽입은 `--[no]stamp` 플래그로 제어됩니다.
스탬프가 지정된 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다.
경고: 스탬핑은 캐시 적중을 줄여 빌드 성능에 해를 끼칠 수 있으므로 가능하면 피해야 합니다.
|
py_runtime
규칙 소스 보기open_in_new
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)
Python 코드를 실행하는 데 사용되는 Python 런타임을 나타냅니다.
`py_runtime` 타겟은 *플랫폼 런타임* 또는 *빌드 내 런타임*을 나타낼 수 있습니다. 플랫폼 런타임은 알려진 경로에서 시스템 설치 인터프리터에 액세스하는 반면 빌드 내 런타임은 인터프리터 역할을 하는 실행 파일 타겟을 가리킵니다. 두 경우 모두 '인터프리터'는 표준 CPython 인터프리터와 동일한 규칙에 따라 명령줄에 전달된 Python 스크립트를 실행할 수 있는 실행 가능한 바이너리 또는 래퍼 스크립트를 의미합니다.
플랫폼 런타임은 본질적으로 비밀 유지가 불가능합니다. 특정 경로에 인터프리터가 있어야 한다는 요구사항이 대상 플랫폼에 적용됩니다. 빌드 내 런타임은 체크인된 인터프리터를 가리키는지 아니면 시스템 인터프리터에 액세스하는 래퍼 스크립트를 가리키는지에 따라 격리 상태일 수도 있고 아닐 수도 있습니다.
예
```
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 |
이름: 필수사항
이 타겟의 고유한 이름입니다.
|
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` 파일)에서 로드할 수 있어야 합니다. [`coverage.py`](https://coverage.readthedocs.io)의 명령줄 인수를 허용해야 하며, 여기에는 적어도 `run` 및 `lcov` 하위 명령어가 포함되어야 합니다.
|
files
|
라벨 목록입니다. 기본값은 [] 입니다.
빌드 내 런타인의 경우 이 런타임을 구성하는 파일 집합입니다.
이러한 파일은 이 런타임을 사용하는 Python 바이너리의 runfiles에 추가됩니다. 플랫폼 런타인의 경우 이 속성을 설정하면 안 됩니다.
|
implementation_name
|
문자열, 기본값은 "" 입니다.
Python 구현 이름 (`sys.implementation.name`)
|
interpreter
|
라벨: 기본값은 None 입니다.
빌드 내 런타인의 경우 이는 인터프리터로 호출할 대상입니다. 다음 중 하나일 수 있습니다.
* 단일 파일(해석기 바이너리) 이러한 인터프리터는 자체 포함된 단일 파일 실행 파일 또는 `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`의 이름과 일치합니다. 입력 값은 문자열이지만 대부분 int로 변환됩니다. 지원되는 키는 다음과 같습니다.
* major: int, 주 버전 번호
* minor: int, 부 버전 번호
* micro: 선택적 int, 마이크로 버전 번호
* releaselevel: 선택적 str, 출시 수준
* serial: 선택적 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` 플래그로 제어됩니다.
하지만 향후 이 속성은 필수 속성이 되며 기본값이 없습니다.
|
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` 필드
:::
|