규칙
py_binary
규칙 소스 보기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, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
py_binary
는 .py
소스 파일 모음 (다른 py_library
규칙에 속할 수 있음), 런타임에 프로그램에 필요한 모든 코드와 데이터를 포함하는 *.runfiles
디렉터리 트리, 올바른 초기 환경과 데이터로 프로그램을 시작하는 스텁 스크립트로 구성된 실행 가능한 Python 프로그램입니다.
예
py_binary( name = "foo", srcs = ["foo.py"], data = [":transform"], # a cc_binary which we invoke at run time deps = [ ":foolib", # a py_library ], )
다른 바이너리 또는 테스트 내에서 py_binary
를 실행하려면 (예: java_test 내에서 일부 모의 리소스를 설정하기 위해 Python 바이너리 실행) 다른 바이너리 또는 테스트가 데이터 섹션에서 py_binary
에 종속되도록 하는 것이 올바른 접근 방식입니다. 그러면 다른 바이너리가 소스 디렉터리를 기준으로 py_binary
를 찾을 수 있습니다.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testing"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. main 이 지정되지 않은 경우 이는 애플리케이션의 기본 진입점인 소스 파일의 이름과 동일해야 합니다(확장자 제외). 예를 들어 진입점의 이름이 main.py 이면 이름은 main 이어야 합니다.
|
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은
대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
일반적으로 py_library 규칙입니다.
|
srcs
|
라벨 목록입니다. 필수입니다. 타겟을 만들기 위해 처리되는 소스 (.py ) 파일 목록입니다.
여기에는 체크인된 모든 코드와 생성된 소스 파일이 포함됩니다. 라이브러리 타겟은 deps 에 속하고 런타임에 필요한 다른 바이너리 파일은 data 에 속합니다.
|
imports
|
문자열 목록입니다. 기본값은 PYTHONPATH 에 추가할 가져오기 디렉터리 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙이 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된
절대 경로 ( |
legacy_create_init
|
정수이며 기본값은 --incompatible_default_to_explicit_init_py 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 (비어 있을 수도 있는) __init__.py 파일을 만들고 필요에 따라 Python 타겟의 srcs 에 추가해야 합니다.
|
main
|
라벨: 기본값은 srcs 에도 나열되어야 합니다. 지정하지 않으면 name 가 대신 사용됩니다 (위 참고). name 이 srcs 의 파일 이름과 일치하지 않으면 main 를 지정해야 합니다.
|
python_version
|
문자열, 구성 불가, 기본값은 deps )을 빌드할지 여부입니다. 유효한 값은 "PY2" 및 "PY3" (기본값)입니다.
Python 버전은 명령줄에 지정된 버전이나 이 버전에 종속된 다른 상위 타겟에 관계없이 이 속성으로 지정된 버전으로 항상 재설정됩니다 (기본적으로). 현재 Python 버전을 버그 경고: 이 속성은 Bazel이 타겟을 빌드하는 버전을 설정하지만 #4815로 인해 결과 스텁 스크립트가 런타임에 잘못된 인터프리터 버전을 호출할 수 있습니다. 필요에 따라 Python 버전을 가리키는 |
srcs_version
|
문자열, 기본값은 srcs 를 선언합니다. Python 런타임 버전을 실제로 설정하려면 실행 가능한 Python 규칙 (py_binary 또는 py_test )의 python_version 속성을 사용하세요.
허용되는 값은 실행 가능한 규칙 ( 버전 요구사항을 도입하는 종속 항목에 관한 진단 정보를 가져오려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 접미사가 있는 파일이 빌드됩니다. 버전 충돌로 인해 지정된 타겟이 빌드되지 않은 경우에도 작동합니다.
|
stamp
|
정수이며 기본값은
스탬프가 찍힌 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다. |
py_library
규칙 소스 보기py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, restricted_to, srcs_version, tags, target_compatible_with, testonly, visibility)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은
대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
일반적으로 py_library 규칙입니다.
|
srcs
|
라벨 목록입니다. 기본값은 .py ) 파일 목록입니다.
여기에는 체크인된 모든 코드와 생성된 소스 파일이 포함됩니다.
|
imports
|
문자열 목록입니다. 기본값은 PYTHONPATH 에 추가할 가져오기 디렉터리 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙이 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된
절대 경로 ( |
srcs_version
|
문자열, 기본값은 srcs 를 선언합니다. Python 런타임 버전을 실제로 설정하려면 실행 가능한 Python 규칙 (py_binary 또는 py_test )의 python_version 속성을 사용하세요.
허용되는 값은 실행 가능한 규칙 ( 버전 요구사항을 도입하는 종속 항목에 관한 진단 정보를 가져오려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 접미사가 있는 파일이 빌드됩니다. 버전 충돌로 인해 지정된 타겟이 빌드되지 않은 경우에도 작동합니다.
|
py_test
규칙 소스 보기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, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
py_test()
규칙은 테스트를 컴파일합니다. 테스트는 일부 테스트 코드 주변의 바이너리 래퍼입니다.
예
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
기본 모듈을 지정할 수도 있습니다.
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은
대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
일반적으로 py_library 규칙입니다.
|
srcs
|
라벨 목록입니다. 필수입니다. 타겟을 만들기 위해 처리되는 소스 (.py ) 파일 목록입니다.
여기에는 체크인된 모든 코드와 생성된 소스 파일이 포함됩니다. 라이브러리 타겟은 deps 에 속하고 런타임에 필요한 다른 바이너리 파일은 data 에 속합니다.
|
imports
|
문자열 목록입니다. 기본값은 PYTHONPATH 에 추가할 가져오기 디렉터리 목록입니다.
'변수 만들기' 대체가 적용됩니다. 이 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다 (참고: 이 규칙이 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된
절대 경로 ( |
legacy_create_init
|
정수이며 기본값은 --incompatible_default_to_explicit_init_py 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 (비어 있을 수도 있는) __init__.py 파일을 만들고 필요에 따라 Python 타겟의 srcs 에 추가해야 합니다.
|
main
|
라벨: 기본값은 srcs 에도 나열되어야 합니다. 지정하지 않으면 name 가 대신 사용됩니다 (위 참고). name 이 srcs 의 파일 이름과 일치하지 않으면 main 를 지정해야 합니다.
|
python_version
|
문자열, 구성 불가, 기본값은 deps )을 빌드할지 여부입니다. 유효한 값은 "PY2" 및 "PY3" (기본값)입니다.
Python 버전은 명령줄에 지정된 버전이나 이 버전에 종속된 다른 상위 타겟에 관계없이 이 속성으로 지정된 버전으로 항상 재설정됩니다 (기본적으로). 현재 Python 버전을 버그 경고: 이 속성은 Bazel이 타겟을 빌드하는 버전을 설정하지만 #4815로 인해 결과 스텁 스크립트가 런타임에 잘못된 인터프리터 버전을 호출할 수 있습니다. 필요에 따라 Python 버전을 가리키는 |
srcs_version
|
문자열, 기본값은 srcs 를 선언합니다. Python 런타임 버전을 실제로 설정하려면 실행 가능한 Python 규칙 (py_binary 또는 py_test )의 python_version 속성을 사용하세요.
허용되는 값은 실행 가능한 규칙 ( 버전 요구사항을 도입하는 종속 항목에 관한 진단 정보를 가져오려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 접미사가 있는 파일이 빌드됩니다. 버전 충돌로 인해 지정된 타겟이 빌드되지 않은 경우에도 작동합니다.
|
stamp
|
정수이며 기본값은 |
py_runtime
규칙 소스 보기py_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
Python 코드를 실행하는 데 사용되는 Python 런타임을 나타냅니다.
py_runtime
타겟은 플랫폼 런타임 또는 인빌드 런타임을 나타낼 수 있습니다. 플랫폼 런타임은 알려진 경로에서 시스템 설치 인터프리터에 액세스하는 반면, 빌드 내 런타임은 인터프리터 역할을 하는 실행 파일 타겟을 가리킵니다. 두 경우 모두 '인터프리터'는 표준 CPython 인터프리터와 동일한 규칙을 따라 명령줄에 전달된 Python 스크립트를 실행할 수 있는 실행 가능한 바이너리 또는 래퍼 스크립트를 의미합니다.
플랫폼 런타임은 본질적으로 비밀폐형입니다. 타겟 플랫폼이 특정 경로에 인터프리터를 갖춰야 한다는 요구사항을 적용합니다. 빌드 내 런타임은 체크인된 인터프리터나 시스템 인터프리터에 액세스하는 래퍼 스크립트를 가리키는지에 따라 hermetic일 수도 있고 아닐 수도 있습니다.
예:
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
|
라벨: 기본값은 |
coverage_tool
|
라벨: 기본값은 py_binary 및 py_test 타겟에서 코드 커버리지 정보를 수집하는 데 사용할 타겟입니다.
설정된 경우 타겟은 단일 파일을 생성하거나 실행 가능한 타겟이어야 합니다. 단일 파일의 경로 또는 타겟이 실행 파일인 경우 실행 파일은 Python 커버리지 도구의 진입점을 결정합니다. 타겟과 그 실행 파일은 커버리지가 사용 설정되면 실행 파일에 추가됩니다. 도구의 진입점은 Python 인터프리터 (예: |
files
|
라벨 목록입니다. 기본값은 |
interpreter
|
라벨: 기본값은 |
interpreter_path
|
문자열, 기본값은 |
python_version
|
문자열, 기본값은 "PY2" 및 "PY3" 입니다.
기본값은 |
stub_shebang
|
문자열, 기본값은 py_binary 타겟을 실행할 때 사용되는 부트스트랩 Python 스크립트에 추가되는 'shebang' 표현식입니다.
동기는 문제 8685를 참고하세요. Windows에는 적용되지 않습니다. |