我在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)
答案 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
我希望这段代码可以帮助完全解决这个问题