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

Mat*_*all 10 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)

cgo*_*lke 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())
Run Code Online (Sandbox Code Playgroud)


Gab*_*aru 5

>>> import platform
>>> platform.architecture()
('32bit', 'ELF')
Run Code Online (Sandbox Code Playgroud)

  • 我在64位窗口上运行32位python(我的env有这个:PROCESSOR_ARCHITEW6432 = AMD64).在这种情况下,python本身是否为32/64位并不重要,它是我追求的内核. (3认同)

San*_*nta 5

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'
Run Code Online (Sandbox Code Playgroud)

这是 64 位 Windows 操作系统上的 Python 32 位。