2011-12-01 19 views
8

我有一个运行这样一个Python 3.2程序:确定如果Python是在Ubuntu正在运行Linux

import platform 
sysname = platform.system() 
sysver = platform.release() 
print(sysname+" "+sysver) 

和Windows返回:

的Windows 7

但在Ubuntu和其他回报:
Linux 3.0.0-13-generic

我需要这样的东西:

Ubuntu 11.10或Mint 12

+2

http://docs.python.org/library/platform.html#platform.linux_distribution – Gazler

+0

谢谢,我真的应该读该文件更多,呃? – triunenature

回答

5

尝试platform.dist

>>> platform.dist() 
('Ubuntu', '11.10', 'oneiric') 
+4

platform.dist()现在已过时,我们应该使用platform.linux_distribution()(只需阅读文档,感谢@Gazler) – triunenature

+0

@triunenature:Python 3中不存在此类弃用警告。http:// docs .python.org/py3k/library/platform.html#platform.dist –

+1

相关知识:DI真的需要更仔细地阅读这些文档。 – triunenature

0

或者,你可以这样做:

import sys 
sys.platform 

这将返回: '将linux2',或者你可以try..finally执行代码块。

+0

是的,但问题是,它只返回linux2,它没有给我任何具体细节......而且这里的目标是非常具体。 Ubuntu 10.04,或者其他,但只是告诉我它的Linux,或者postox并没有帮助 – triunenature

6

当前接受的答案使用弃用函数。要做到这一点像Python 2.6和更高版本的正确方法是:

import platform 
print(platform.linux_distribution()) 

文档不说,如果这个功能可在非Linux平台上,但我的本地Windows桌面上,我得到:

>>> import platform 
>>> print(platform.linux_distribution()) 
('', '', '') 

还有这个,做同样的事情在Win32的机器:

>>> print(platform.win32_ver()) 
('post2008Server', '6.1.7601', 'SP1', 'Multiprocessor Free') 
-1
is_ubuntu = 'ubuntu' in os.getenv('DESKTOP_SESSION', 'unknown') 

拿起如果你以U捉迷藏如果您正在寻找的是nity或Unity-2D。

+1

如果你在没有桌面的Ubuntu服务器上运行,该怎么办? –

+0

这个想法不是在寻找ubuntu,它的映射哪个操作系统正在运行。 – triunenature

相关问题