Chi*_*chi 6 python linux ubuntu
我目前正在编写一个更改某些网络配置文件的Python应用程序.该应用程序需要在Ubuntu 10.04到13.10上运行.问题是,NetworkManager在不同的版本上以不同的方式被破坏(尽管它们似乎最终在13.04+中修复了它),这导致我的应用程序不兼容.
我已经找出每个版本的问题并为它们开发了解决方法,我只是不确定最好的方法是检测用户运行的是哪个版本的Ubuntu.
到目前为止,我提出的最佳解决方案是解析输出lsb_release -a
,但这似乎是一个相当脆弱的解决方案,可能会失败的Ubuntu派生的发行版,如Mint甚至可能与一些"官方"变体(Kubuntu,Xubuntu等).
有没有一种很好的方法来检测给定Linux发行版的基本发行版和版本,以便我可以根据我的应用程序在该版本上做出的选择?
您可以做的一件事就是简化代码,实际上是了解lsb_release是如何编写的.它实际上是用python编写的.
所以我们可以将大部分代码减少到这个:
>>> import lsb_release
>>> lsb_release.get_lsb_information()
{'RELEASE': '10.04', 'CODENAME': 'lucid', 'ID': 'Ubuntu', 'DESCRIPTION': 'Ubuntu 10.04.4 LTS'}
Run Code Online (Sandbox Code Playgroud)
这不一定有助于所有子ubuntu发行版,但我不知道有任何内置表可以帮助你.
最好的选择是使用操作系统和平台库.
import os
import platform
print os.name #returns os name in simple form
platform.system() #returns the base system, in your case Linux
platform.release() #returns release version
Run Code Online (Sandbox Code Playgroud)
平台库应该是更有用的.
编辑:Rob对这篇文章的评论也突出了更具体的platform.linux_distribution(),我想我会在这里指出.
归档时间: |
|
查看次数: |
4100 次 |
最近记录: |