sys — 시스템 관련 함수¶
이 모듈은 명령줄 인자, 모듈 검색 경로, 표준 스트림, 그리고 실행 중인 구현에 대한 정보를 포함하여 인터프리터 고유의 변수와 함수에 접근할 수 있도록 제공합니다.
함수¶
- sys.exit(retval: object = 0, /) NoReturn¶
주어진 종료 코드로 현재 프로그램을 종료합니다. 내부적으로 이 함수는
SystemExit예외를 발생시킵니다. 인자가 주어지면 그 값이SystemExit의 인자로 전달됩니다.OpenMV Cam에서 처리되지 않은
SystemExit는 현재 MicroPython의 소프트 리셋을 유발합니다.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
종료 시 호출될 func를 등록합니다. func는 인자를 받지 않는 호출 가능 객체이거나, 호출을 비활성화하려면
None이어야 합니다.atexit함수는 이 함수로 이전에 설정한 값을 반환하며, 초깃값은None입니다.CPython과의 차이점
이 함수는 CPython의
atexit모듈과 유사한 기능을 제공하기 위한 MicroPython 확장입니다.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
트레이스백과 함께 예외를 파일류 객체 file(기본값은
sys.stdout)에 출력합니다.CPython과의 차이점
이것은 CPython의
traceback모듈에 있는 함수의 단순화된 버전입니다.traceback.print_exception()과 달리 이 함수는 예외 타입, 예외 값, 트레이스백 객체 대신 예외 값만 받습니다. file 인자는 위치 인자여야 하며, 그 이후의 인자는 지원되지 않습니다. CPython과 호환되는traceback모듈은micropython-lib에서 찾을 수 있습니다.
- sys.settrace(tracefunc: Callable | None) None¶
바이트코드 실행의 추적을 활성화합니다. 자세한 내용은 CPython 문서를 참조하세요.
이 함수는 OpenMV Cam에서 사용할 수 없습니다. 코드 실행 속도를 늦추기 때문에 기본적으로 비활성화되어 있으며, 활성화하려면 커스텀 펌웨어를 빌드해야 합니다.
상수¶
- sys.implementation: object¶
현재 Python 구현에 대한 정보를 담은 객체입니다. MicroPython의 경우 다음과 같은 속성을 가집니다:
name - 문자열 “micropython”
version - 튜플 (major, minor, micro, releaselevel), 예: (1, 22, 0, ‘’)
_machine - 기반 머신을 설명하는 문자열
_mpy - 지원되는 mpy 파일 형식 버전(선택적 속성)
_build - MicroPython이 빌드된 구성을 식별하는 데 도움이 되는 문자열
_thread - 선택적 문자열 속성. 타깃이 스레딩을 지원하는 경우에 존재하며 “GIL” 또는 “unsafe” 중 하나입니다.
이 객체는 MicroPython을 다른 Python 구현과 구별하는 권장 방법입니다(매우 최소화된 포트에서는 여전히 존재하지 않을 수 있다는 점에 유의하세요).
버전 1.22.0-preview부터 implementation.version의 네 번째 노드 releaselevel은 빈 문자열이거나
"preview"입니다._build 항목은 버전 1.25.0에서 추가되었으며 하이픈으로 구분된 요소들의 집합입니다. 향후 새로운 요소가 추가될 수 있으므로 이 필드는
sys.implementation._build.split("-")를 사용하여 접근하는 것이 가장 좋습니다. 현재 사용되는 요소들은 다음과 같습니다:OpenMV Cam에서 첫 번째 요소는 보드 이름이고 두 번째 요소(있는 경우)는 보드 변형입니다.
_thread 항목은 버전 1.26.0에서 추가되었으며, 존재한다면 타깃에
_thread모듈이 있다는 의미입니다. 타깃이 GIL(전역 인터프리터 잠금)을 활성화하면 이 속성은"GIL"입니다. 그렇지 않으면 속성은"unsafe"이며, 타깃은 스레딩을 지원하지만 GIL을 활성화하지 않으므로 스레드 간에 공유되는 가변 Python 객체(예:bytearray,list,dict)는_thread.allocate_lock과 같은 잠금으로 명시적으로 보호해야 합니다.CPython과의 차이점
CPython은 이 객체에 더 많은 속성을 요구하지만, 실제로 유용한 최소한의 속성만 MicroPython에 구현되어 있습니다.
- sys.maxsize: int¶
현재 플랫폼에서 네이티브 정수 타입이 가질 수 있는 최댓값입니다. 플랫폼 최댓값보다 작은 경우(long int 지원이 없는 MicroPython 포트의 경우가 그렇습니다)에는 MicroPython 정수 타입으로 표현 가능한 최댓값입니다.
이 속성은 플랫폼의 “비트 수”(32비트 대 64비트 등)를 감지하는 데 유용합니다. 이 속성을 어떤 값과 직접 비교하지 말고 그 안의 비트 수를 세는 것을 권장합니다:
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64-bit (or more) platform ... else: # 32-bit (or less) platform # Note that on 32-bit platform, value of bits may be less than 32 # (e.g. 31) due to peculiarities described above, so use "> 16", # "> 32", "> 64" style of comparisons.
- sys.path: list[str]¶
임포트할 모듈을 검색할 디렉터리들의 가변 리스트입니다.
CPython과의 차이점
MicroPython에서 값이
".frozen"인 항목은 임포트가 검색의 해당 지점에서 고정 모듈을 검색해야 함을 나타냅니다. 고정 모듈을 찾지 못하면 검색은.frozen이라는 디렉터리를 찾지 않으며, 대신sys.path의 다음 항목으로 계속 진행합니다.
- sys.platform: str¶
MicroPython이 실행 중인 플랫폼입니다. 이것은 포트/보드에서 정의한 문자열입니다 – 예를 들어 OpenMV RT1060에서는
"mimxrt", OpenMV AE3에서는"alif"입니다(일부 구형 OpenMV Cam은"OpenMV4-H7"과 같은 모델별 문자열을 보고합니다). 프로그램이 MicroPython에서 실행되는지(다른 Python 구현이 아니라) 확인하려면 대신sys.implementation을 사용하세요.
- sys.ps1: str¶
기본 REPL 프롬프트에 사용되는 문자열을 담는 가변 속성입니다. 기본값은 표준 Python 프롬프트인
>>>를 제공합니다. 연속 프롬프트에 대해서는sys.ps2도 참조하세요.
- sys.ps2: str¶
REPL 연속 프롬프트에 사용되는 문자열을 담는 가변 속성입니다. 기본값은 표준 Python 프롬프트인
...를 제공합니다. 기본 프롬프트에 대해서는sys.ps1도 참조하세요.