在Python中,如何确定内核是以32位还是64位模式运行?

时间:2011-08-23 17:08:38

标签: python

我在Linux,Mac OS和Windows上运行python 2.6,需要确定内核是以32位还是64位模式运行。有一个简单的方法吗?

我查看了platform.machine(),但这在Windows上无法正常工作。

我也查看了platform.architecture(),这在64位Windows上运行32位python时不起作用。

注意:看起来python 2.7有一个修复程序可以使platform.architecture()正常工作。不幸的是,我需要使用python 2.6(至少目前为止)。

(编辑:从离线谈话到人们,听起来似乎没有一种强大的python方式来做出这种决定而不诉诸邪恶的黑客。我只是好奇人们用过什么邪恶黑客他们的项目使用python 2.6。例如,在Windows上,可能需要查看PROCESSOR_ARCHITEW6432环境变量并检查AMD64)

5 个答案:

答案 0 :(得分:9)

如何解决issue7860

import os
import sys
import platform

def machine():
    """Return type of machine."""
    if os.name == 'nt' and sys.version_info[:2] < (2,7):
        return os.environ.get("PROCESSOR_ARCHITEW6432", 
               os.environ.get('PROCESSOR_ARCHITECTURE', ''))
    else:
        return platform.machine()

def os_bits(machine=machine()):
    """Return bitness of operating system, or None if unknown."""
    machine2bits = {'AMD64': 64, 'x86_64': 64, 'i386': 32, 'x86': 32}
    return machine2bits.get(machine, None)

print (os_bits())

答案 1 :(得分:5)

>>> import platform
>>> platform.architecture()
('32bit', 'ELF')

答案 2 :(得分:1)

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.uname()[4]
'AMD64'

这是在64位Windows操作系统上使用Python 32位。

答案 3 :(得分:-1)

我们可以使用follow API来检测当前的32位或64位

  
    
      

platform.architecture()[0]

    
  

“64位

答案 4 :(得分:-1)

我希望这可以解决我在Windows 8.1 64位上尝试过的问题,并为我返回值AMD64

import _winreg
def get_registry_value(key, subkey, value):

  key = getattr(_winreg, key)
  handle = _winreg.OpenKey(key, subkey )
  (value, type) = _winreg.QueryValueEx(handle, value)
  return value

windowsbit = get_registry_value(
"HKEY_LOCAL_MACHINE",
"SYSTEM\\CurrentControlSet\Control\\Session Manager\\Environment",
"PROCESSOR_ARCHITECTURE")
print windowsbit

如果您正在使用64位Windows机器,则运行此代码,这将打印AMD64

或者如果您正在使用32位,它将打印x86

我希望这段代码可以帮助完全解决这个问题