Python

platform — 하부 플랫폼의 식별 데이터에 대한 액세스

소스 코드: Lib/platform.py


참고

각 플랫폼은 알파벳순으로 나열되고, 리눅스는 유닉스 절에 포함됩니다.

크로스 플랫폼

platform.architecture(executable=sys.executable, bits='', linkage='')

다양한 아키텍처 정보에 대해 주어진 실행 파일(기본값은 파이썬 인터프리터 바이너리)을 조회합니다.

실행 파일에 사용된 비트 아키텍처와 링크 형식에 대한 정보가 들어있는 튜플 (bits, linkage)를 반환합니다. 두 값은 모두 문자열로 반환됩니다.

결정할 수 없는 값은 매개 변수 사전 설정에 따라 반환됩니다. bits가 ''로 주어지면, sizeof(pointer)(또는 파이썬 버전 < 1.5.2 에서는 sizeof(long))가 지원되는 포인터 크기를 나타내는 데 사용됩니다.

함수는 시스템의 file 명령을 사용하여 실제 작업을 수행합니다. 이것은 대부분(전부가 아니라면)의 유닉스 플랫폼과 일부 유닉스가 아닌 플랫폼에서 가능하며 실행 파일이 파이썬 인터프리터를 가리키는 경우에만 가능합니다. 위의 요구가 충족되지 않으면 합리적인 기본값이 사용됩니다.

참고

맥 OS(그리고 아마도 다른 플랫폼에서도)에서, 실행 파일은 다중 아키텍처를 포함하는 유니버설 파일일 수 있습니다.

현재 인터프리터가 “64-비트” 인지를 판단하려면, sys.maxsize 어트리뷰트를 조회하는 것이 더 신뢰성 있습니다.:

is_64bits = sys.maxsize > 2**32
platform.machine()

기계 유형을 반환합니다, 예를 들어 'AMD64'. 값을 판별할 수 없으면 빈 문자열이 반환됩니다.

출력은 플랫폼 의존적이며 대소문자 및 명명 규칙에서 다를 수 있습니다.

platform.node()

컴퓨터의 네트워크 이름을 반환합니다 (완전히 정규화되지 않았을 수 있습니다!). 값을 판별할 수 없으면 빈 문자열이 반환됩니다.

platform.platform(aliased=False, terse=False)

하부 플랫폼을 식별하는 가능한 한 많은 유용한 정보를 포함하는 단일 문자열을 반환합니다.

출력은 기계가 구문 분석하기보다는 사람이 읽을 수 있도록 합니다. 다른 플랫폼에서는 다르게 보일 수 있는데, 이는 의도 된 것입니다.

aliased가 참이면, 함수는 일반 이름과 다른 시스템 이름을 보고하는 다양한 플랫폼에 대해 별칭을 사용합니다, 예를 들어 SunOS는 Solaris로 보고됩니다. 이를 구현하는 데 system_alias() 함수가 사용됩니다.

terse를 참으로 설정하면 함수가 플랫폼을 식별하는 데 필요한 절대적으로 최소한의 정보만 반환합니다.

버전 3.8에서 변경: macOS에서, 이 함수는 이제 darwin 버전 대신 macOS 버전을 얻기 위해 mac_ver() 를 사용합니다 (비어 있지 않은 릴리스 문자열을 반환한다면).

platform.processor()

(실제) 프로세서 이름을 반환합니다, 예를 들어 'amdk6'.

값을 판별할 수 없으면 빈 문자열이 반환됩니다. 많은 플랫폼이 이 정보를 제공하지 않거나 단순히 machine()과 같은 값을 반환함에 유의하십시오. NetBSD가 그렇습니다.

platform.python_build()

파이썬 빌드 번호와 날짜를 문자열로 나타내는 튜플 (buildno, builddate)를 반환합니다.

platform.python_compiler()

파이썬 컴파일에 사용된 컴파일러를 식별하는 문자열을 반환합니다.

platform.python_branch()

파이썬 구현 SCM 브랜치를 식별하는 문자열을 반환합니다.

platform.python_implementation()

파이썬 구현을 식별하는 문자열을 반환합니다. 가능한 반환 값은 이렇습니다: ‘CPython’, ‘IronPython’, ‘Jython’, ‘PyPy’.

platform.python_revision()

파이썬 구현 SCM 리비전을 식별하는 문자열을 반환합니다.

platform.python_version()

파이썬 버전을 문자열 'major.minor.patchlevel'로 반환합니다.

파이썬 sys.version과 달리, 반환 값은 항상 patchlevel을 포함함에 유의하십시오 (기본값은 0입니다).

platform.python_version_tuple()

파이썬 버전을 문자열의 튜플 (major, minor, patchlevel)로 반환합니다.

파이썬 sys.version과 달리, 반환 값은 항상 patchlevel을 포함함에 유의하십시오 (기본값은 '0'입니다).

platform.release()

시스템의 릴리스를 반환합니다, 예를 들어 '2.2.0'이나 'NT'. 값을 판별할 수 없으면 빈 문자열이 반환됩니다.

platform.system()

시스템/OS 이름을 반환합니다, 가령 'Linux', 'Darwin', 'Java', 'Windows'. 값을 판별할 수 없으면 빈 문자열이 반환됩니다.

iOS 및 Android에서는 사용자에게 보이는 OS 이름(즉, 'iOS'`\\, ``'iPadOS'`\\ 또는 ``'Android'`\\)을 반환합니다. 커널 이름(‘Darwin’\ 또는 `’Linux’\)을 얻으려면 :func:`os.uname\을 사용하십시오.

platform.system_alias(system, release, version)

일부 시스템에서 사용되는 상용 마케팅 이름으로 별칭 된 (system, release, version)을 반환합니다. 혼동을 일으킬 수 있는 일부 경우에 정보의 순서를 변경하기도 합니다.

platform.version()

시스템의 릴리스 버전을 반환합니다, 예를 들어 '#3 on degas'. 값을 판별할 수 없으면 빈 문자열이 반환됩니다.

iOS 및 Android의 경우, 이것은 사용자에게 보이는 OS 버전입니다. Darwin 또는 Linux 커널 버전을 얻으려면 os.uname()\을 사용하십시오.

platform.uname()

꽤 이식성 있는 uname 인터페이스. system, node, release, version, machine, processor의 6개의 어트리뷰트를 포함한 namedtuple()를 반환합니다.

processor는 요청 시 늦게 확인됩니다.

참고: 처음 두 개의 속성 이름은 os.uname()\이 제공하는 이름과 다르며, 여기서 이름은 sysname\와 nodename\입니다.

결정할 수 없는 항목은 ''로 설정됩니다.

버전 3.3에서 변경: 결과가 튜플에서 namedtuple()로 변경되었습니다.

버전 3.9에서 변경: processor\는 즉시가 아닌 늦게 확인됩니다.

platform.invalidate_caches()

uname()\과 같은 정보의 내부 캐시를 비웁니다. 이는 일반적으로 플랫폼의 node()\가 외부 프로세스에 의해 변경되었고 업데이트된 값을 검색해야 할 때 유용합니다.

Added in version 3.14.

Windows 플랫폼

platform.win32_ver(release='', version='', csd='', ptype='')

윈도우 레지스트리에서 추가 버전 정보를 얻고 OS 릴리스, 버전 번호, CSD 수준 (서비스 팩) 및 OS 유형(다중/단일 프로세서)을 가리키는 튜플 (release, version, csd, ptype)를 반환합니다. 파악할 수 없는 값은 매개 변수로 주어지는 기본값(모두 빈 문자열이 기본값입니다)으로 설정됩니다.

힌트: ptype은 단일 프로세서 NT 기계에서는 'Uniprocessor Free'이고 다중 프로세서 기계에서는 'Multiprocessor Free'입니다. 'Free'는 디버깅 코드가 없는 OS 버전을 나타냅니다. 또한 'Checked'를 언급할 수 있는데, OS 버전이 디버깅 코드, 즉 인자, 범위 등을 검사하는 코드를 사용한다는 것을 뜻합니다.

platform.win32_edition()

현재 윈도우 에디션을 나타내는 문자열을 반환합니다. 값을 파악할 수 없으면 None을 반환합니다. 가능한 값은 'Enterprise', 'IoTUAP', 'ServerStandard''nanoserver'를 포함하지만 이에 국한되지는 않습니다.

Added in version 3.8.

platform.win32_is_iot()

win32_edition()에 의해 반환된 윈도우 에디션이 IoT 에디션으로 인식되면 True를 반환합니다.

Added in version 3.8.

macOS 플랫폼

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

맥 OS 버전 정보를 얻고 튜플 (release, versioninfo, machine)으로 반환하는데, versioninfo는 튜플 (version, dev_stage, non_release_version)입니다.

결정할 수 없는 항목은 ''로 설정됩니다. 모든 튜플 항목은 문자열입니다.

iOS 플랫폼

platform.ios_ver(system='', release='', model='', is_simulator=False)

iOS 버전 정보를 가져와 다음 속성을 가진 namedtuple()\로 반환합니다:

  • system 은 OS 이름입니다. `'iOS' \ 또는 `'iPadOS' \ 중 하나입니다.

  • release 는 문자열 형태의 iOS 버전 번호입니다 (예: `'17.2' \).

  • model 은 장치 모델 식별자입니다. 이는 실제 장치의 경우 `'iPhone13,2' \와 같은 문자열이거나 시뮬레이터의 경우 `'iPhone' \일 것입니다.

  • is_simulator 는 앱이 시뮬레이터에서 실행되는지 아니면 실제 장치에서 실행되는지를 설명하는 불리언 값입니다.

판단할 수 없는 항목은 매개 변수로 주어지는 기본값으로 설정됩니다.

유닉스 플랫폼

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

파일 executable(기본값은 파이썬 인터프리터입니다)이 링크된 libc 버전을 확인하려고 시도합니다. 문자열의 튜플 (lib, version)을 반환하는데, 조회가 실패하면 지정된 매개 변수를 기본값으로 사용합니다.

다른 libc 버전이 실행 파일에 심볼을 추가하는 방법에 대해 이 함수가 가진 지식은 아마도 gcc로 컴파일된 실행 파일에서만 사용 가능하다는 것에 유의하십시오.

파일은 chunksize 바이트의 청크 단위로 읽고 스캔됩니다.

리눅스 플랫폼

platform.freedesktop_os_release()

os-release 파일에서 운영 체제 식별자를 가져와 딕셔너리 형태로 반환합니다. os-release 파일은 freedesktop.org 표준 <https://www.freedesktop.org/software/systemd/man/os-release.html>\이며 대부분의 리눅스 배포판에서 사용 가능합니다. 눈에 띄는 예외는 Android 및 Android 기반 배포판입니다.

/etc/os-release/usr/lib/os-release 도 읽을 수 없을 때 OSError \ 또는 그하위 클래스를 발생시킵니다.

성공 시, 이 함수는 키와 값이 문자열인 딕셔너리를 반환합니다. 값의 특수 문자(” 또는 $)는 따옴표가 제거됩니다. 필드 NAME, ID, 및 PRETTY_NAME 은 항상 표준에 따라 정의됩니다. 다른 모든 필드는 선택 사항입니다. 공급업체는 추가 필드를 포함할 수 있습니다.

NAME, VERSION_, VARIANT_ 와 같은 필드는 사용자에게 표시하기에 적합한 문자열임을 유의하십시오. 프로그램은 리눅스 배포판을 식별하기 위해 ID_, ID_LIKE, VERSION_ID 또는 VARIANT_ID 와 같은 필드를 사용해야 합니다.

예제:

def get_like_distro():
    info = platform.freedesktop_os_release()
    ids = [info["ID"]]
    if "ID_LIKE" in info:
        # id 들은 공백으로 구분되고 우선 순위에 따라 정렬됩니다
        ids.extend(info["ID_LIKE"].split())
    return ids

Added in version 3.10.

안드로이드 플랫폼

platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)

안드로이드 장치 정보를 가져옵니다. 다음 속성을 가진 :func:`~collections.namedtuple`을 반환합니다. 결정할 수 없는 값은 매개변수로 주어진 기본값으로 설정됩니다.

  • release - Android 버전입니다. 문자열 형태입니다 (예: "14").

  • api_level - 실행 중인 장치의 API 레벨입니다. 정수 형태로 제공됩니다 (예: 안드로이드 14의 경우 34). Python이 빌드된 API 레벨을 확인하려면 :func:`sys.getandroidapilevel`을 참조하십시오.

  • manufacturer - 제조업체 이름.

  • model - 모델 이름 – 일반적으로 마케팅 이름 또는 모델 번호입니다.

  • device - 장치 이름 – 일반적으로 모델 번호 또는 코드명입니다.

  • is_emulator - 장치가 에뮬레이터인 경우 True, 실제 장치인 경우 False 입니다.

Google은 `알려진 모델 및 장치 이름 목록 <https://storage.googleapis.com/play_public/supported_devices.html>`를 유지 관리합니다.

Added in version 3.13.

명령줄 사용법

platform`은 인터프리터의 :option:-m` 스위치를 사용하여 직접 호출할 수도 있습니다:

python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]

다음 옵션들이 허용됩니다:

--terse

플랫폼에 대한 간결한 정보를 출력합니다. 이는 platform.platform()terse 인수가 True 로 설정된 상태로 호출하는 것과 같습니다.

--nonaliased

시스템/OS 이름 별칭 없이 플랫폼 정보를 출력합니다. 이는 platform.platform()aliased 인수가 True 로 설정된 상태로 호출하는 것과 같습니다.

출력 형식을 명시적으로 제어하기 위해 하나 이상의 위치 인자(terse, nonaliased)를 전달할 수도 있습니다. 이들은 해당 옵션과 유사하게 작동합니다.