【问题标题】:Determine if python is being run in Ubuntu Linux确定 python 是否正在 Ubuntu Linux 中运行
【发布时间】:2012-01-10 10:39:37
【问题描述】:

我有一个运行如下的 Python 3.2 程序:

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

在 Windows 上它返回:

Windows 7

但在 Ubuntu 和其他系统上它会返回:
Linux 3.0.0-13-通用

我需要类似的东西:

Ubuntu 11.10 或 Mint 12

【问题讨论】:

标签: python linux ubuntu


【解决方案1】:

看起来platform.dist()platform.linux_distribution()deprecated in Python 3.5 and will be removed in Python 3.8。以下适用于 Python 2/3

import platform
'ubuntu' in platform.platform().lower()

返回值示例

>>> platform.platform()
'Linux-4.10.0-40-generic-x86_64-with-Ubuntu-16.04-xenial'

【讨论】:

  • 感谢您提及弃用状态
  • 也适用于 Ubuntu 18.04。
【解决方案2】:

当前接受的答案使用了已弃用的功能。从 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')
【解决方案3】:
is_ubuntu = 'ubuntu' in os.getenv('DESKTOP_SESSION', 'unknown')

如果您在 Unity 或 Unity-2D 中运行,请选择您正在寻找的内容。

【讨论】:

  • 如果您在没有桌面的 ubuntu 服务器设置上运行怎么办?
  • 这个想法不是在寻找 ubuntu,而是为了映射正在运行的操作系统。
【解决方案4】:

或者,您可以这样做:

import sys
sys.platform

它会返回:'linux2',或者你可以实现 try..finally 代码块。

【讨论】:

  • 是的,但问题是,它只返回 linux2,它没有给我任何细节......这里的目标是非常具体。 Ubuntu 10.04 或诸如此类,但只是告诉我它的 linux 或 postox 无济于事
【解决方案5】:

试试platform.dist

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-02-25
  • 2010-12-24
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 2014-03-22
相关资源
最近更新 更多