# `platform` — Acesso aos dados de identificação da plataforma subjacente

Código-fonte: Lib/platform.py

Nota

Plataformas específicas listadas em ordem alfabética, com Linux incluído na seção Unix.

## Multiplataforma

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

  Consulta o executável fornecido (o padrão é o binário do interpretador Python) para obter várias informações de arquitetura.

  Retorna uma tupla `(bits, linkage)` que contém informações sobre a arquitetura de bits e o formato de linkage usado para o executável. Ambos os valores são retornados como strings.

  Valores que não podem ser determinados são retornados como fornecidos pelas predefinições de parâmetros. Se bits for fornecido como `''`, o `sizeof(pointer)` (ou `sizeof(long)` na versão Python < 1.5.2) é usado como indicador para o tamanho de ponteiro suportado.

  A função depende do comando `file` do sistema para fazer o trabalho real. Isso está disponível na maioria, se não em todas as plataformas Unix e algumas plataformas não Unix e somente se o executável apontar para o interpretador Python. Padrões razoáveis são usados quando as necessidades acima não são atendidas.

  Nota

  No macOS (e talvez em outras plataformas), arquivos executáveis podem ser arquivos universais contendo diversas arquiteturas.

  Para obter a “característica de 64 bits” do interpretador atual, é mais confiável consultar o atributo `sys.maxsize`:

      is_64bits = sys.maxsize > 2**32

platform.machine()

  Retorna o tipo de máquina, por exemplo, `'AMD64'`. Uma string vazia é retornada se o valor não puder ser determinado.

  A saída depende da plataforma e pode diferir nas convenções de nomenclatura e uso de maiúsculas e minúsculas.

platform.node()

  Retorna o nome de rede do computador (pode não ser totalmente qualificado!). Uma string vazia é retornada se o valor não puder ser determinado.

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

  Retorna uma única string identificando a plataforma subjacente com o máximo de informações úteis possível.

  A saída é pretendida para ser legível por humanos em vez de analisável por máquinas. Pode parecer diferente em diferentes plataformas e isso é intencional.

  Se aliased for true, a função usará apelidos para várias plataformas que relatam nomes de sistemas que diferem de seus nomes comuns, por exemplo, SunOS será relatado como Solaris. A função `system_alias()` é usada para implementar isso.

  Definir terse como true faz com que a função retorne apenas o mínimo absoluto de informações necessárias para identificar a plataforma.

  Alterado na versão 3.8: No macOS, a função agora usa `mac_ver()`, se retornar uma string de versão não vazia, para obter a versão do macOS em vez da versão do darwin.

platform.processor()

  Retorna o nome (real) do processador, por exemplo `'amdk6'`.

  Uma string vazia é retornada se o valor não puder ser determinado. Note que muitas plataformas não fornecem essas informações ou simplesmente retornam o mesmo valor que para `machine()`. O NetBSD faz isso.

platform.python_build()

  Retorna uma tupla `(buildno, builddate)` informando o número e a data da construção do Python como strings.

platform.python_compiler()

  Retorna uma string identificando o compilador usado para compilar Python.

platform.python_branch()

  Retorna uma string identificando a branch SCM da implementação do Python.

platform.python_implementation()

  Retorna uma string identificando a implementação do Python. Os valores de retorno possíveis são: ‘CPython’, ‘IronPython’, ‘Jython’, ‘PyPy’.

platform.python_revision()

  Retorna uma string que identifica a revisão do SCM da implementação Python.

platform.python_version()

  Retorna a versão do Python como string `'major.minor.patchlevel'`.

  Observe que, diferentemente do `sys.version` do Python, o valor retornado sempre incluirá o patchlevel (o padrão é 0).

platform.python_version_tuple()

  Retorna a versão do Python como tupla `(major, minor, patchlevel)` de strings.

  Observe que, diferentemente do `sys.version` do Python, o valor retornado sempre incluirá o patchlevel (o padrão é `'0'`).

platform.release()

  Retorna a versão do sistema, por exemplo, `'2.2.0'` ou `'NT'`. Uma string vazia é retornada se o valor não puder ser determinado.

platform.system()

  Retorna o nome do sistema/SO, como `'Linux'`, `'Darwin'`, `'Java'`, `'Windows'`. Uma string vazia é retornada se o valor não puder ser determinado.

  No iOS e Android, isso retorna o nome do SO voltado para o usuário (por exemplo, `'iOS`, `'iPadOS'` ou `'Android'`). Para obter o nome do kernel (`'Darwin'` ou `'Linux'`), use `os.uname()`.

platform.system_alias(system, release, version)

  Retorna `(sistema, release, versão)` com apelido para nomes comuns de marketing usados para alguns sistemas. Ele também faz alguma reordenação das informações em alguns casos em que, de outra forma, causaria confusão.

platform.version()

  Retorna a versão de lançamento do sistema, por exemplo, `'#3 on degas'`. Uma string vazia é retornada se o valor não puder ser determinado.

  No iOS e Android, esta é a versão do SO voltada para o usuário. Para obter a versão do kernel Darwin ou Linux, use `os.uname()`.

platform.uname()

  Interface para uname razoavelmente portátil. Retorna um `namedtuple()` contendo seis atributos: `system`, `node`, `release`, `version`, `machine` e `processor`.

  `processor` é resolvido tardiamente, sob demanda.

  Nota: os dois primeiros nomes de atributos diferem dos nomes apresentados por `os.uname()`, onde são chamados `sysname` e `nodename`.

  As entradas que não podem ser determinadas são definidas como `''`.

  Alterado na versão 3.3: O resultado mudou de uma tupla para `namedtuple()`.

  Alterado na versão 3.9: `processor` é resolvido tarde em vez de imediatamente.

platform.invalidate_caches()

  Limpa o cache interno de informações, como `uname()`. Isso normalmente é útil quando o `node()` da plataforma é alterado por um processo externo e é necessário recuperar o valor atualizado.

  Adicionado na versão 3.14.

## Plataforma Java

platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))

  Interface de versão para Jython.

  Retorna uma tupla `(release, vendor, vminfo, osinfo)` com vminfo sendo uma tupla `(vm_name, vm_release, vm_vendor)` e osinfo sendo uma tupla `(os_name, os_version, os_arch)`. Valores que não podem ser determinados são definidos para os padrões fornecidos como parâmetros (que são todos padrão para `''`).

  Descontinuado desde a versão 3.13, será removido na versão 3.15: Ele não foi testado em grande parte, tinha uma API confusa e só era útil para suporte ao Jython.

## Plataforma Windows

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

  Obtém informações adicionais sobre a versão do Registro do Windows e retorna uma tupla `(release, version, csd, ptype)` referente à versão do SO, número da versão, nível do CSD (service pack) e tipo de sistema operacional (processador múltiplo/único). Os valores que não podem ser determinados são definidos para os padrões fornecidos como parâmetros (que são todos padrão para uma string vazia).

  Como dica: ptype é `'Uniprocessor Free'` em máquinas NT de processador único e `'Multiprocessor Free'` em máquinas de multiprocessador. O `'Free'` se refere à versão do sistema operacional que está livre de código de depuração. Ele também pode declarar `'Checked'`, o que significa que a versão do sistema operacional usa código de depuração, ou seja, código que verifica argumentos, intervalos, etc.

platform.win32_edition()

  Retorna uma string representando a edição atual do Windows, ou `None` se o valor não puder ser determinado. Os valores possíveis incluem, mas não estão limitados a `'Enterprise'`, `'IoTUAP'`, `'ServerStandard'` e `'nanoserver'`.

  Adicionado na versão 3.8.

platform.win32_is_iot()

  Retorna `True` se a edição do Windows retornada por `win32_edition()` for reconhecida como uma edição IoT.

  Adicionado na versão 3.8.

## Plataforma macOS

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

  Obtém informações sobre a versão do macOS e retorna-as como tupla `(release, versioninfo, machine)`, sendo versioninfo uma tupla `(version, dev_stage, non_release_version)`.

  Entradas que não podem ser determinadas são definidas como `''`. Todas as entradas de tupla são strings.

## Plataforma iOS

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

  Obtém informações sobre a versão do iOS e retorna-as como `namedtuple()` com os seguintes atributos:

  - `system` é o nome do sistema operacional; `'iOS'` ou `'iPadOS'`.

  - `release` é o número da versão do iOS como uma string (por exemplo, `'17.2'`).

  - `model` é o identificador do modelo do dispositivo; será uma string como `'iPhone13,2'` para um dispositivo físico ou `'iPhone'` em um simulador.

  - `is_simulator` é um booleano que descreve se o aplicativo está sendo executado em um simulador ou em um dispositivo físico.

  As entradas que não podem ser determinadas são definidas para os padrões fornecidos como parâmetros.

## Plataformas Unix

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

  Tenta determinar a versão libc contra a qual o executável do arquivo (padrão para o interpretador Python) está vinculado. Retorna uma tupla de strings `(lib, version)` que tem como padrão os parâmetros fornecidos caso a pesquisa falhe.

  Observe que esta função tem conhecimento profundo de como diferentes versões da libc adicionam símbolos ao executável e provavelmente só pode ser usada para executáveis compilados usando gcc.

  O arquivo é lido e escaneado em blocos de chunksize bytes.

## Plataformas Linux

platform.freedesktop_os_release()

  Obtém a identificação do sistema operacional do arquivo `os-release` e retorna-a como um dict. O arquivo `os-release` é um padrão freedesktop.org e está disponível na maioria das distribuições Linux. Uma exceção notável é o Android e as distribuições baseadas em Android.

  Levanta `OSError` ou subclasse quando nem `/etc/os-release` nem `/usr/lib/os-release` podem ser lidos.

  Em caso de sucesso, a função retorna um dicionário onde chaves e valores são strings. Valores têm seus caracteres especiais como `"` e `$` sem aspas. Os campos `NAME`, `ID` e `PRETTY_NAME` são sempre definidos de acordo com o padrão. Todos os outros campos são opcionais. Os fornecedores podem incluir campos adicionais.

  Note que campos como `NAME`, `VERSION` e `VARIANT` são strings adequadas para apresentação aos usuários. Os programas devem usar campos como `ID`, `ID_LIKE`, `VERSION_ID` ou `VARIANT_ID` para identificar distribuições Linux.

  Exemplo:

      def get_like_distro():
          info = platform.freedesktop_os_release()
          ids = [info["ID"]]
          if "ID_LIKE" in info:
              # ids são separados por espaço e ordenado por precedência
              ids.extend(info["ID_LIKE"].split())
          return ids

  Adicionado na versão 3.10.

## Plataforma Android

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

  Obtém informações do dispositivo Android. Retorna um `namedtuple()` com os seguintes atributos. Valores que não podem ser determinados são definidos para os padrões fornecidos como parâmetros.

  - `release` - Versão do Android, como uma string (por exemplo, `"14"`).

  - `api_level` - Nível de API do dispositivo em execução, como um inteiro (por exemplo, `34` para Android 14). Para obter o nível de API contra o qual o Python foi criado, consulte `sys.getandroidapilevel()`.

  - `manufacturer` - Nome do fabricante.

  - `model` - Nome do modelo – normalmente o nome de marketing ou o número do modelo.

  - `device` - Nome do dispositivo – normalmente o número do modelo ou um codinome.

  - `is_emulator` - `True` se o dispositivo for um emulador; `False` se for um dispositivo físico.

  O Google mantém uma lista de nomes de modelos e dispositivos conhecidos.

  Adicionado na versão 3.13.

## Uso na linha de comando

`platform` também pode ser invocado diretamente usando a opção `-m` do interpretador:

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

As seguintes opções são aceitas:

--terse

  Exibe informações concisas sobre a plataforma. Isso equivale a chamar `platform.platform()` com o argumento terse definido como `True`.

--nonaliased

  Exibe informações da plataforma sem alias de nome do sistema/SO. Isso equivale a chamar `platform.platform()` com o argumento aliased definido como `True`.

Você também pode passar um ou mais argumentos posicionais (`terse`, `nonaliased`) para controlar explicitamente o formato de saída. Eles se comportam de forma semelhante às suas opções correspondentes.