www org instalar descargar como python cross-platform

org - python g



Python: ¿En qué sistema operativo estoy ejecutando? (27)

¿Qué tal una implementación simple de Enum como la siguiente? No hay necesidad de libs externos!

import platform from enum import Enum class OS(Enum): def checkPlatform(osName): return osName.lower()== platform.system().lower() MAC = checkPlatform("darwin") LINUX = checkPlatform("linux") WINDOWS = checkPlatform("windows") #I haven''t test this one

Simplemente puedes acceder con valor Enum

if OS.LINUX.value: print("Cool it is Linux")

PS es python3

¿Qué debo mirar para ver si estoy en Windows o Unix, etc.?


¿Qué tal una nueva respuesta?

import psutil psutil.MACOS #True (OSX is deprecated) psutil.WINDOWS #False psutil.LINUX #False

Esta sería la salida si estuviera usando MACOS


/usr/bin/python3.2

def cls(): from subprocess import call from platform import system os = system() if os == ''Linux'': call(''clear'', shell = True) elif os == ''Windows'': call(''cls'', shell = True)


Código de muestra para diferenciar los sistemas operativos que utilizan python:

from sys import platform as _platform if _platform == "linux" or _platform == "linux2": # linux elif _platform == "darwin": # MAC OS X elif _platform == "win32": # Windows elif _platform == "win64": # Windows 64-bit


Comencé un listado más sistemático de los valores que puede esperar al usar los distintos módulos (siéntase libre de editar y agregar su sistema):

Linux (64 bits) + WSL

os.name posix sys.platform linux platform.system() Linux sysconfig.get_platform() linux-x86_64 platform.machine() x86_64 platform.architecture() (''64bit'', '''')

  • Probado con archlinux y menta, obtuve los mismos resultados.
  • en python2 sys.platform tiene el sufijo de la versión del kernel, por ejemplo, linux2 , todo lo demás permanece idéntico
  • misma salida en el subsistema de Windows para Linux (probado con ubuntu 18.04 LTS), excepto platform.architecture() = (''64bit'', ''ELF'')

WINDOWS (64 bits)

(con una columna de 32 bits en el subsistema de 32 bits)

official python installer 64bit 32bit ------------------------- ----- ----- os.name nt nt sys.platform win32 win32 platform.system() Windows Windows sysconfig.get_platform() win-amd64 win32 platform.machine() AMD64 AMD64 platform.architecture() (''64bit'', ''WindowsPE'') (''64bit'', ''WindowsPE'') msys2 64bit 32bit ----- ----- ----- os.name posix posix sys.platform msys msys platform.system() MSYS_NT-10.0 MSYS_NT-10.0-WOW sysconfig.get_platform() msys-2.11.2-x86_64 msys-2.11.2-i686 platform.machine() x86_64 i686 platform.architecture() (''64bit'', ''WindowsPE'') (''32bit'', ''WindowsPE'') msys2 mingw-w64-x86_64-python3 mingw-w64-i686-python3 ----- ------------------------ ---------------------- os.name nt nt sys.platform win32 win32 platform.system() Windows Windows sysconfig.get_platform() mingw mingw platform.machine() AMD64 AMD64 platform.architecture() (''64bit'', ''WindowsPE'') (''32bit'', ''WindowsPE'') cygwin 64bit 32bit ------ ----- ----- os.name posix posix sys.platform cygwin cygwin platform.system() CYGWIN_NT-10.0 CYGWIN_NT-10.0-WOW sysconfig.get_platform() cygwin-3.0.1-x86_64 cygwin-3.0.1-i686 platform.machine() x86_64 i686 platform.architecture() (''64bit'', ''WindowsPE'') (''32bit'', ''WindowsPE'')

Algunas observaciones:

  • también hay distutils.util.get_platform() que es idéntico a `sysconfig.get_platform
  • anaconda en windows es el mismo que el instalador oficial de python windows
  • No tengo una Mac ni un verdadero sistema de 32 bits y no estaba motivado para hacerlo en línea

Para comparar con su sistema, simplemente ejecute este script (y adjunte los resultados aquí si faltan)

from __future__ import print_function import os import sys import platform import sysconfig print("os.name ", os.name) print("sys.platform ", sys.platform) print("platform.system() ", platform.system()) print("sysconfig.get_platform() ", sysconfig.get_platform()) print("platform.machine() ", platform.machine()) print("platform.architecture() ", platform.architecture())


Cuidado si estás en Windows con Cygwin, donde os.name es posix .

>>> import os, platform >>> print os.name posix >>> print platform.system() CYGWIN_NT-6.3-WOW


Dang - lbrandy me dio una paliza, pero eso no significa que no pueda proporcionarte los resultados del sistema para Vista.

>>> import os >>> os.name ''nt'' >>> import platform >>> platform.system() ''Windows'' >>> platform.release() ''Vista''

... y no puedo creer que nadie haya publicado uno para Windows 10 todavía:

>>> import os >>> os.name ''nt'' >>> import platform >>> platform.system() ''Windows'' >>> platform.release() ''10''


Esta solución funciona tanto para python como para jython .

módulo os_identify.py :

import platform import os # This module contains functions to determine the basic type of # OS we are running on. # Contrary to the functions in the `os` and `platform` modules, # these allow to identify the actual basic OS, # no matter whether running on the `python` or `jython` interpreter. def is_linux(): try: platform.linux_distribution() return True except: return False def is_windows(): try: platform.win32_ver() return True except: return False def is_mac(): try: platform.mac_ver() return True except: return False def name(): if is_linux(): return "Linux" elif is_windows(): return "Windows" elif is_mac(): return "Mac" else: return "<unknown>"

Use así:

import os_identify print "My OS: " + os_identify.name()


Estoy usando la herramienta WLST que viene con weblogic, y no implementa el paquete de la plataforma.

wls:/offline> import os wls:/offline> print os.name java wls:/offline> import sys wls:/offline> print sys.platform ''java1.5.0_11''

Además de parchear el sistema javaos.py ( problema con os.system () en Windows 2003 con jdk1.5 ) (que no puedo hacer, tengo que usar weblogic fuera de la caja), esto es lo que uso:

def iswindows(): os = java.lang.System.getProperty( "os.name" ) return "win" in os.lower()


Llego tarde al juego pero, en caso de que alguien lo necesite, esta es una función que utilizo para hacer ajustes en mi código para que funcione en Windows, Linux y MacOs:

import sys def get_os(osoptions={''linux'':''linux'',''Windows'':''win'',''macos'':''darwin''}): '''''' get OS to allow code specifics '''''' opsys = [k for k in osoptions.keys() if sys.platform.lower().find(osoptions[k].lower()) != -1] try: return opsys[0] except: return ''unknown_OS''


Para Jython, la única forma de obtener el nombre del sistema os.name que encontré es verificar la propiedad de Java de os.name (probado con sys , os y módulos de platform para Jython 2.5.3 en WinXP):

def get_os_platform(): """return platform name, but for Jython it uses os.name Java property""" ver = sys.platform.lower() if ver.startswith(''java''): import java.lang ver = java.lang.System.getProperty("os.name").lower() print(''platform: %s'' % (ver)) return ver


Para el registro aquí están los resultados en Mac:

>>> import os >>> os.name ''posix'' >>> import platform >>> platform.system() ''Darwin'' >>> platform.release() ''8.11.1''


Puede ver el código en pyOSinfo que forma parte del paquete pip-date , para obtener la información más relevante del sistema operativo, como se ve en su distribución de Python.

Una de las razones más comunes por las que las personas desean verificar su sistema operativo es la compatibilidad del terminal y si ciertos comandos del sistema están disponibles. Desafortunadamente, el éxito de esta comprobación depende en cierta medida de su instalación y sistema operativo de Python. Por ejemplo, uname no está disponible en la mayoría de los paquetes de Windows Python. El programa de python anterior le mostrará la salida de las funciones incorporadas más comúnmente utilizadas, ya proporcionadas por os, sys, platform, site .

Así que la mejor manera de obtener solo el código esencial es verlo como un ejemplo. (Supongo que podría haberlo pegado aquí, pero eso no habría sido políticamente correcto).


Resultados interesantes en windows 8:

>>> import os >>> os.name ''nt'' >>> import platform >>> platform.system() ''Windows'' >>> platform.release() ''post2008Server''

Edit: Eso es un bug


Si desea datos legibles por el usuario pero aún así detallados, puede usar platform.platform()

>>> import platform >>> platform.platform() ''Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne''

Aquí hay algunas posibles llamadas diferentes que puede hacer para identificar dónde se encuentra

import platform import sys def linux_distribution(): try: return platform.linux_distribution() except: return "N/A" print("""Python version: %s dist: %s linux_distribution: %s system: %s machine: %s platform: %s uname: %s version: %s mac_ver: %s """ % ( sys.version.split(''/n''), str(platform.dist()), linux_distribution(), platform.system(), platform.machine(), platform.platform(), platform.uname(), platform.version(), platform.mac_ver(), ))

Los resultados de este script se ejecutaron en algunos sistemas diferentes (Linux, Windows, Solaris, MacOS) y arquitecturas (x86, x64, Itanium, power pc, sparc) están disponibles aquí: github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

El servidor Ubuntu 12.04 por ejemplo da:

Python version: [''2.6.5 (r265:79063, Oct 1 2012, 22:04:36) '', ''[GCC 4.4.3]''] dist: (''Ubuntu'', ''10.04'', ''lucid'') linux_distribution: (''Ubuntu'', ''10.04'', ''lucid'') system: Linux machine: x86_64 platform: Linux-2.6.32-32-server-x86_64-with-Ubuntu-10.04-lucid uname: (''Linux'', ''xxx'', ''2.6.32-32-server'', ''#62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011'', ''x86_64'', '''') version: #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 mac_ver: ('''', ('''', '''', ''''), '''')


Si está ejecutando macOS X y ejecutando platform.system() , obtendrá Darwin porque macOS X se basa en el sistema operativo Darwin de Apple. Darwin es el núcleo de macOS X y es esencialmente macOS X sin la GUI.


Si no está buscando la versión del kernel, etc., pero está buscando la distribución de Linux, es posible que desee utilizar lo siguiente

en python2.6 +

>>> import platform >>> print platform.linux_distribution() (''CentOS Linux'', ''6.0'', ''Final'') >>> print platform.linux_distribution()[0] CentOS Linux >>> print platform.linux_distribution()[1] 6.0

en python2.4

>>> import platform >>> print platform.dist() (''centos'', ''6.0'', ''Final'') >>> print platform.dist()[0] centos >>> print platform.dist()[1] 6.0

Obviamente, esto funcionará solo si está ejecutando esto en Linux. Si desea tener un script más genérico en todas las plataformas, puede mezclar esto con los ejemplos de código que figuran en otras respuestas.


También puede usar solo el módulo de plataforma sin importar el módulo OS para obtener toda la información.

>>> import platform >>> platform.os.name ''posix'' >>> platform.uname() (''Darwin'', ''mainframe.local'', ''15.3.0'', ''Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64'', ''x86_64'', ''i386'')

Se puede lograr un diseño agradable y ordenado con el propósito de informar usando esta línea:

for i in zip([''system'',''node'',''release'',''version'',''machine'',''processor''],platform.uname()):print i[0],'':'',i[1]

Eso da esta salida:

system : Darwin node : mainframe.local release : 15.3.0 version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 machine : x86_64 processor : i386

Lo que generalmente falta es la versión del sistema operativo, pero debe saber que si está ejecutando Windows, Linux o Mac, una forma independiente de la plataforma es utilizar esta prueba:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]: ....: if i[0]: ....: print ''Version: '',i[0]


También puede usar sys.platform si ya ha importado sys y no desea importar otro módulo.

>>> import sys >>> sys.platform ''linux2''


Utilice las palabras clave import os y os.name .


Verifique las pruebas disponibles con la plataforma del módulo e imprima la respuesta para su sistema:

import platform print dir(platform) for x in dir(platform): if x[0].isalnum(): try: result = getattr(platform, x)() print "platform."+x+": "+result except TypeError: continue


en la misma vena....

import platform is_windows=(platform.system().lower().find("win") > -1) if(is_windows): lv_dll=LV_dll("my_so_dll.dll") else: lv_dll=LV_dll("./my_so_dll.so")


hago esto

import sys print sys.platform

Docs aquí: sys.platform .

Todo lo que necesitas está probablemente en el módulo sys.


prueba esto:

import os os.uname()

y tu puedes hacerlo

info=os.uname() info[0] info[1]


import sys import platform # return a platform identifier print(sys.platform) # return system/os name print(platform.system()) # print system info # similar to ''uname'' command in unix print(platform.uname())



>>> import platform >>> platform.system()