首先,我不认为这个问题是重复的
Detect 64bit OS (windows) in Python
因为恕我直言,它还没有得到彻底的回答。
唯一接近的答案是:
Use
sys.getwindowsversion()
or the existence of PROGRAMFILES(X86) (if 'PROGRAMFILES(X86)' in os.environ
)
但是:
- windows环境变量
PROGRAMFILES(X86)
可靠吗?我担心任何人都可以创建它,即使它不在系统中。 - 如何使用
sys.getwindowsversion()
获取架构?
关于sys.getwindowsversion()
:
链接http://docs.python.org/library/sys.html#sys.getwindowsversion
带领我们到http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29.aspx
但我没有看到任何与架构(32 位/64 位)相关的内容。
此外,返回的元组中的平台元素似乎与架构无关。
最后一点:我正在寻找同时使用 python 2.5 和从 Windows XP 开始的 Windows 版本的解决方案
谢谢!
编辑:
相关信息可在此处找到
http://msdn.microsoft.com/en-us/library/ms724340%28v=VS.85%29.aspx
但是我怎样才能用 python 得到它呢?
编辑2: 在 64 位 Windows 上,使用 32 位 python 解释器:
- os.environ["PROCESSOR_ARCHITECTURE"] 返回
- 'x86'
- platform.architecture() 返回
- ('32位', 'WindowsPE')
最佳答案
我认为平台模块确实是获取此信息的最佳方式。
>>> import platform
>>> platform.platform()
'Windows-7-6.1.7601-SP1'
platform.processor()
'Intel64 Family 6 Model 42 Stepping 7, GenuineIntel'
我看不到从哪里可以得到关于 32/64 位 Windows 的明确答案,所以我建议:
try:
os.environ["PROGRAMFILES(X86)"]
bits = 64
except:
bits = 32
print "Win{0}".format(bits)
或者,如果您需要知道您正在运行哪种 Python 版本(因为您可以在 x64 Windows 下运行 x32 python):
x32 python x64 windows:
>>> platform.architecture()
('32bit', 'WindowsPE')
>>> sys.version
'2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]'
x64 python x64 windows:
>>> platform.architecture()
('64bit', 'WindowsPE')
>>> sys.version
'2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)]'
关于Python:获取 Windows 操作系统版本和体系结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764356/