如何判断Python内核是运行在32位还是64位模式?
我在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。)
6 个回答
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'
这是在64位的Windows操作系统上使用32位的Python。
7
在编程中,有时候我们会遇到一些问题,想要找到解决办法。比如说,有人可能在使用某个工具或库时,遇到了错误或者不明白的地方。这时候,大家通常会去一个叫StackOverflow的网站上提问,那里有很多经验丰富的程序员会帮忙解答。
在提问时,最好能把问题描述得清楚一些,比如说你在做什么,遇到了什么具体的错误,或者你希望实现什么功能。这样别人才能更好地理解你的问题,给出有效的建议。
另外,提供一些相关的代码片段也是很有帮助的,这样别人可以更直观地看到你遇到的问题是什么。比如,你可以把出错的代码放在一个代码块里,像这样:
>>> import platform
>>> platform.architecture()
('32bit', 'ELF')
。
总之,提问时要尽量详细和清晰,这样才能更快地找到解决方案。
8
关于如何解决问题7860,你有什么想法呢?
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())