![](/img/trans.png)
[英]platform.linux_distribution() deprecated - what are the alternatives?
[英]What does platform.system and platform.linux_distribution exactly output?
我正在嘗試創建一個python腳本來在Linux機器中自動安裝和配置某些程序。
我的想法是使用平台和多處理庫來詢問系統信息(platform.system,platform.linux_distribution,multiprocessing.cpu_count等),然后安裝軟件並根據我所得到的內容為軟件配置創建文本文件那些電話。
我在確定操作系統和發行版時遇到了問題:我需要知道腳本在哪個Linux發行版中運行,以便我可以啟動適當的命令,而我正在尋找的信息不在python文檔中。
根據該文檔( http://docs.python.org/2/library/platform.html),platform.system
返回系統/操作系統名稱,例如“ Linux”,“ Windows”或“ Java”。 如果無法確定該值,則返回一個空字符串。
和platform.linux_distribution
嘗試確定Linux OS發行版名稱的名稱。
(......)
返回一個元組(distname,version,id),默認為參數給定的args。 id是版本號后面括號中的項目。 通常是版本代號。
但這還不夠具體,沒有提及任何特殊情況。
我已經在我的機器上嘗試了這些變量(platform.system返回'Linux'和platform.linux_distribution'debian'),但是我沒有辦法在其他系統上嘗試(而且我認為為以下目的創建虛擬機是不可行的)每個Linux發行版都可以嘗試,並在每個發行版中嘗試一下)
我需要確切知道distname字符串platform.linux_distribution在不同的Linux發行版中輸出什么,以便可以在腳本中使用這些值。
我還需要確認platform.system是否在每個Linux發行版中都返回相同的內容。 有什么例外嗎?
首先, 查閱代碼 , platform.system
將os.uname
包裝。 后者為后來的* nix,是uname
命令調用。 Wiki中提供了一些可能的值。
第二, 大致來說 , linux_distribution
要做的是head /etc/file
,其中file
是第一個以release
或version
結尾的文件。 也就是說,例如對於debian / ubuntu來說,是head /etc/debian_version
。 然后拆分結果行,並在找到元組時返回。
我可以訪問的基於Linux平台的linux_distribution
輸出的一些示例:
$ python -c 'import platform; print platform.linux_distribution()'
('debian', 'squeeze/sid', '')
('debian', 'wheezy/sid', '')
('SUSE Linux Enterprise Server ', '11', 'x86_64')
('Red Hat Enterprise Linux Server', '5.9', 'Tikanga')
('Red Hat Enterprise Linux Server', '6.4', 'Santiago')
我想你可以在這里找到模式。 我個人不會依賴linux_distribution
,例如/etc/debian_version
內容可以在升級后被/etc/debian_version
時, linux_distribution
出現一些已知問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.