O que eu preciso olhar para ver se estou no Windows ou Unix, etc?
python
cross-platform
platform-specific
platform-agnostic
Mark Harrison
fonte
fonte
Respostas:
A saída de
platform.system()
é a seguinte:Linux
Darwin
Windows
Consulte:
platform
- Acesso aos dados de identificação da plataforma subjacentefonte
platform
maissys.platform
?platform.system()
retorna em"Windows"
vez de"win32"
.sys.platform
também contém"linux2"
versões antigas do Python, enquanto contém apenas as"linux"
mais recentes.platform.system()
sempre retornou apenas"Linux"
.os.uname()
existe apenas para sistemas Unix. Os documentos do Python 3: docs.python.org/3/library/os.htmlAvailability: recent flavors of Unix.
Dang - lbrandy me venceu, mas isso não significa que não posso fornecer os resultados do sistema para o Vista!
... e não acredito que ninguém postou um para o Windows 10 ainda:
fonte
platform.release()
'7'
platform.release()
no meu Windows 10 , e isso definitivamente me deu'8'
. Talvez eu instalei o python antes de atualizar, mas realmente?Para o registro, aqui estão os resultados no Mac:
fonte
platform.release()
retorna'19.2.0'
Exemplo de código para diferenciar sistemas operacionais usando python:
fonte
Você também pode usar
sys.platform
se você já importousys
e não deseja importar outro módulofonte
Se você quiser dados legíveis pelo usuário, mas ainda detalhados, use platform.platform ()
Aqui estão algumas chamadas possíveis diferentes que você pode fazer para identificar onde está
As saídas desse script foram executadas em alguns sistemas diferentes (Linux, Windows, Solaris, MacOS) e arquiteturas (x86, x64, Itanium, power pc, sparc) estão disponíveis aqui: https://github.com/hpcugent/easybuild/ wiki / OS_flavor_name_version
O servidor Ubuntu 12.04, por exemplo, fornece:
fonte
DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
História curta
Use
platform.system()
. RetornaWindows
,Linux
ouDarwin
(para OSX).Longa história
Existem três maneiras de obter o SO no Python, cada uma com seus próprios prós e contras:
Método 1
Como isso funciona ( origem ): Internamente, ele chama APIs do SO para obter o nome do SO, conforme definido pelo SO. Veja aqui para vários valores específicos do SO.
Pro: Sem mágica, nível baixo.
Con: Depende da versão do SO, por isso é melhor não usar diretamente.
Método 2
Como isso funciona ( fonte ): Internamente, verifica se o python possui módulos específicos do sistema operacional chamados posix ou nt.
Pro: simples para verificar se o sistema operacional posix
Con: sem diferenciação entre Linux ou OSX.
Método 3
Como isso funciona ( fonte ): Internamente, eventualmente chamará APIs de SO internas, obterá o nome específico da versão do SO, como 'win32' ou 'win16' ou 'linux1' e, em seguida, normalizará para nomes mais genéricos como 'Windows' ou 'Linux' ou 'Darwin', aplicando várias heurísticas.
Pro: a melhor maneira portátil para Windows, OSX e Linux.
Contras: O pessoal do Python deve manter a heurística da normalização atualizada.
Sumário
platform.system()
.posix
ount
então useos.name
.sys.platform
.fonte
Que tal uma nova resposta:
Essa seria a saída se eu estivesse usando o MACOS
fonte
Comecei uma lista um pouco mais sistemática de quais valores você pode esperar usando os vários módulos (fique à vontade para editar e adicionar seu sistema):
Linux (64 bits) + WSL
sys.platform
é sufixado pela versão do kernel, por exemplolinux2
, todo o resto permanece idênticoplatform.architecture() = ('64bit', 'ELF')
WINDOWS (64 bits)
(com a coluna de 32 bits em execução no subsistema de 32 bits)
Algumas observações:
distutils.util.get_platform()
que é idêntico ao `sysconfig.get_platformPara comparar com o seu sistema, basta executar este script (e, por favor, acrescente os resultados aqui, se estiver faltando :)
fonte
Estou usando a ferramenta WLST que acompanha o weblogic e ela não implementa o pacote da plataforma.
Além de corrigir o sistema javaos.py ( problema com os.system () no Windows 2003 com jdk1.5 ) (o que não posso fazer, preciso usar o weblogic pronto), é isso que eu uso:
fonte
/usr/bin/python3.2
fonte
Para o Jython, a única maneira de obter o nome do sistema operacional que encontrei é verificar a
os.name
propriedade Java (experimentada comsys
,os
eplatform
módulos para o Jython 2.5.3 no WinXP):fonte
Resultados interessantes no windows 8:
Edit: Isso é um bug
fonte
Cuidado se você estiver no Windows com Cygwin, onde
os.name
estáposix
.fonte
Na mesma veia....
fonte
Se você não procura a versão do kernel, etc, mas procura a distribuição linux, pode usar o seguinte
em python2.6 +
em python2.4
Obviamente, isso funcionará apenas se você estiver executando isso no linux. Se você deseja ter um script mais genérico entre plataformas, pode misturar isso com exemplos de código fornecidos em outras respostas.
fonte
tente isto:
e você pode fazer isso:
fonte
os.uname()
não está disponível no windows: docs.python.org/2/library/os.html#os.uname Disponibilidade:Verifique os testes disponíveis com a plataforma do módulo e imprima a resposta para o seu sistema:
fonte
Você também pode usar apenas o módulo da plataforma sem importar o módulo os para obter todas as informações.
Um layout agradável e arrumado para fins de geração de relatórios pode ser alcançado usando esta linha:
Isso fornece esta saída:
O que está faltando geralmente é a versão do sistema operacional, mas você deve saber se está executando o windows, linux ou mac de uma maneira independente da plataforma é usar este teste:
fonte
Sei que essa é uma pergunta antiga, mas acredito que minha resposta seja útil para algumas pessoas que procuram uma maneira python simples e fácil de entender para detectar o SO no código. Testado em python3.7
fonte
Se você estiver executando o macOS X e for executado,
platform.system()
obterá o darwin porque o macOS X foi desenvolvido no Darwin OS da Apple. Darwin é o núcleo do macOS X e é essencialmente o macOS X sem a GUI.fonte
Esta solução funciona para ambos
python
ejython
.módulo os_identify.py :
Use assim:
fonte
Que tal uma implementação simples do Enum como a seguir? Não há necessidade de bibliotecas externas!
Simplesmente você pode acessar com o valor Enum
PS É python3
fonte
Você pode olhar o código no
pyOSinfo
qual faz parte do pacote pip-date , para obter as informações mais relevantes do sistema operacional, como visto na sua distribuição Python.Uma das razões mais comuns pelas quais as pessoas desejam verificar seu sistema operacional é a compatibilidade do terminal e se determinados comandos do sistema estão disponíveis. Infelizmente, o sucesso dessa verificação depende um pouco da instalação e do sistema operacional python. Por exemplo,
uname
não está disponível na maioria dos pacotes python do Windows. O programa python acima mostrará a saída das funções internas mais usadas, já fornecidas poros, sys, platform, site
.Portanto, a melhor maneira de obter apenas o código essencial é considerá- lo um exemplo. (Acho que poderia ter colado aqui, mas isso não teria sido politicamente correto.)
fonte
Estou atrasado para o jogo, mas, caso alguém precise, essa é uma função que eu uso para fazer ajustes no meu código para que ele seja executado no Windows, Linux e MacOs:
fonte