2013年3月1日 星期五

python detect os and architecture

在 python 裡面要偵測OS的平台時可以使用 platform 這個 module:

platform.architecture()
('32bit', 'ELF')  or ('64bit', 'ELF')

要知道 OS 的版本可以用:

platform.dist()
('redhat', '6.1', 'Santiago') or ('SuSE', '11', 'x86_64')

基本上在 Linux 都可以正確的拿到所需要的資訊,but ...
在 Windows 上事情就沒有這麼簡單了...

因為即使在 Windows x64 的作業系統上,我們依然可以裝 32 位元的 python, 
這時候用 platform.architecture() 看到的就是會 ('32bit', 'WindowsPE')

那應該要怎麼辦呢? stackoverflow 上有人說可以用

os.environ['PROGRAMFILES'] 如果你看到了目錄名稱裡有 x86 字串,那應該幾乎可以猜到是 32bit python 跑在 64bit OS上。因為只有 64bit Windows 會為了相容 32bit 程式而將程式安裝在 Program Files(x86)  下。

32bit python on 32bit Windows
32bit python on 64bit Windows
64bit python on 32bit Windows => 裝不出來這樣的環境吧XD
64bit python on 64bit Windows ??

會有更準確的方法嗎?

REF:
http://stackoverflow.com/questions/2208828/detect-64bit-os-windows-in-python

沒有留言:

張貼留言