규칙
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
는 실행 가능한 Python 프로그램으로 구성된 .py
소스 파일 모음 (다른 py_library
규칙에 속할 수 있음), 런타임 시 프로그램에 필요한 모든 코드와 데이터가 포함된 *.runfiles
디렉터리 트리, 올바른 초기 환경과 데이터로 프로그램을 시작하는 스텁 스크립트로 구성됩니다.
예
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
를 실행하려는 경우(예: python 바이너리를 실행하여 java_test 내에서 일부 모의 리소스를 설정) 다른 바이너리 또는 테스트가 데이터 섹션의 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 )을 Python 2용으로 빌드할지 Python 3용으로 빌드할지 여부입니다. 유효한 값은 "PY2" 및 "PY3" (기본값)입니다.
Python 버전은 명령줄에 지정된 버전이나 이 버전에 종속된 다른 상위 타겟에 지정된 버전과 관계없이 항상 이 속성으로 지정된 버전으로 재설정됩니다(기본적으로). 현재 Python 버전에서 버그 경고: 이 속성은 Bazel이 대상을 빌드하는 버전을 설정하지만 #4815로 인해 결과 스텁 스크립트가 런타임에 잘못된 인터프리터 버전을 계속 호출할 수 있습니다. 필요한 경우 Python 버전을 가리키는 |
srcs_version
|
문자열, 기본값은 srcs 가 Python 2, Python 3 또는 둘 다와 호환된다고 선언합니다. 실제로 Python 런타임 버전을 설정하려면 실행 가능한 Python 규칙의 python_version 속성 (py_binary 또는 py_test )을 사용합니다.
허용되는 값은 실행 가능한 규칙 ( 버전 요구사항을 유발하는 종속 항목에 대한 진단 정보를 얻으려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo)을 실행하면 됩니다. 이렇게 하면 타겟에 Python 버전 또는 다른 버전이 필요한 이유에 대한 정보를 제공하는 -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 에 추가할 가져오기 디렉터리 목록입니다.
'Make 변수' 대체 적용 이러한 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다(참고: 이 규칙에 종속된 규칙은 아님). 각 디렉터리가 이 규칙에 종속된
절대 경로( |
srcs_version
|
문자열, 기본값은 srcs 가 Python 2, Python 3 또는 둘 다와 호환된다고 선언합니다. 실제로 Python 런타임 버전을 설정하려면 실행 가능한 Python 규칙의 python_version 속성 (py_binary 또는 py_test )을 사용합니다.
허용되는 값은 실행 파일 규칙 ( 버전 요구사항을 도입하는 종속 항목에 관한 진단 정보를 가져오려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo이렇게 하면 타겟에 특정 Python 버전이 필요한 이유에 관한 정보를 제공하는 접미사가 -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 에 추가할 가져오기 디렉터리 목록입니다.
'Make 변수' 대체 적용 이러한 가져오기 디렉터리는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다(참고: 이 규칙에 종속된 규칙은 아님). 각 디렉터리는 이 규칙에 종속된
절대 경로 ( |
legacy_create_init
|
정수, 기본값은 --incompatible_default_to_explicit_init_py 가 사용되지 않는 한 true를 의미합니다. false인 경우 사용자는 필요한 경우 빈 __init__.py 파일을 만들고 Python 타겟의 srcs 에 추가해야 합니다.
|
main
|
라벨: 기본값은 srcs 에도 나열되어야 합니다. 지정하지 않으면 name 이 대신 사용됩니다 (위 참고). name 가 srcs 의 파일 이름과 일치하지 않으면 main 를 지정해야 합니다.
|
python_version
|
문자열, 구성 불가, 기본값은 deps )을 Python 2용으로 빌드할지 Python 3용으로 빌드할지 여부입니다. 유효한 값은 "PY2" 및 "PY3" (기본값)입니다.
Python 버전은 명령줄에 지정된 버전이나 이 버전에 종속된 다른 상위 타겟에 지정된 버전과 관계없이 항상 이 속성으로 지정된 버전으로 재설정됩니다(기본적으로). 현재 Python 버전에서 버그 경고: 이 속성은 Bazel이 타겟을 빌드하는 버전을 설정하지만 #4815로 인해 결과 스텁 스크립트가 런타임 시 잘못된 인터프리터 버전을 호출할 수 있습니다. 이 해결 방법을 참조하세요. 필요에 따라 Python 버전을 가리키는 |
srcs_version
|
문자열, 기본값은 srcs 가 Python 2, Python 3 또는 둘 다와 호환된다고 선언합니다. 실제로 Python 런타임 버전을 설정하려면 실행 가능한 Python 규칙의 python_version 속성 (py_binary 또는 py_test )을 사용합니다.
허용되는 값은 실행 파일 규칙 ( 버전 요구사항을 도입하는 종속 항목에 관한 진단 정보를 가져오려면 타겟에서 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo이렇게 하면 타겟에 특정 Python 버전이 필요한 이유에 관한 정보를 제공하는 접미사가 -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 스크립트를 실행할 수 있는 실행 가능한 바이너리 또는 래퍼 스크립트를 의미합니다.
플랫폼 런타임은 본질적으로 비밀 유지가 불가능합니다. 이는 대상 플랫폼에 특정 경로에 인터프리터가 있어야 한다는 요구사항을 부과합니다. 빌드 내 런타임은 체크인된 인터프리터를 가리키는지 아니면 시스템 인터프리터에 액세스하는 래퍼 스크립트를 가리키는지에 따라 견고할 수도 있고 아닐 수도 있습니다.
예:
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 스크립트에 추가된 '셰방' 표현식입니다.
동기는 문제 8685를 참고하세요. Windows에는 적용되지 않습니다. |