wil*_*oup 37 python windows 64-bit
有谁知道我将如何检测Windows在Python下的位版本.我需要知道这是一种为Program Files使用正确文件夹的方法.
非常感谢
pho*_*bie 46
我认为这个问题的最佳解决方案已由Mark Ribau发布.
Python 2.7及更新版本问题的最佳答案是:
def is_os_64bit():
return platform.machine().endswith('64')
Run Code Online (Sandbox Code Playgroud)
在Windows上,跨平台功能在platform.machine()内部使用Matthew Scoutens答案中使用的环境变量.
我发现了以下值:
对于Python 2.6及更早版本:
def is_windows_64bit():
if 'PROCESSOR_ARCHITEW6432' in os.environ:
return True
return os.environ['PROCESSOR_ARCHITECTURE'].endswith('64')
Run Code Online (Sandbox Code Playgroud)
要查找我使用的Python解释器位版本:
def is_python_64bit():
return (struct.calcsize("P") == 8)
Run Code Online (Sandbox Code Playgroud)
Joc*_*zel 39
我想你应该查看os.environ['PROGRAMFILES']程序文件文件夹.
Mar*_*bau 29
来到这里搜索正确检测是否在64位窗口上运行,将上述所有内容编译成更简洁的内容.
下面你将找到一个测试是否在64位窗口上运行的函数,一个获取32位Program Files文件夹的函数,以及一个获取64bit Program Files文件夹的函数; 所有无论运行32位还是64位python.当运行32位python时,大多数事情在64位运行时报告为32位,甚至os.environ['PROGRAMFILES'].
import os
def Is64Windows():
return 'PROGRAMFILES(X86)' in os.environ
def GetProgramFiles32():
if Is64Windows():
return os.environ['PROGRAMFILES(X86)']
else:
return os.environ['PROGRAMFILES']
def GetProgramFiles64():
if Is64Windows():
return os.environ['PROGRAMW6432']
else:
return None
Run Code Online (Sandbox Code Playgroud)
注意:是的,这有点hackish.所有其他"应该工作"的方法,在64位Windows上运行32位Python时不起作用(至少对于我尝试过的各种2.x和3.x版本).
编辑:
2011-09-07 - 添加了一个说明为什么只有这种hackish方法正常工作.
Joe*_*erg 23
platformmodule - 访问底层平台的标识数据
>>> import platform
>>> platform.architecture()
('32bit', 'WindowsPE')
Run Code Online (Sandbox Code Playgroud)
在64位Windows上,32位Python返回:
('32bit', 'WindowsPE')
Run Code Online (Sandbox Code Playgroud)
这意味着这个答案即使已被接受,也是不正确的.请参阅下面的一些答案,了解可能适用于不同情况的选项.
def os_platform():
true_platform = os.environ['PROCESSOR_ARCHITECTURE']
try:
true_platform = os.environ["PROCESSOR_ARCHITEW6432"]
except KeyError:
pass
#true_platform not assigned to if this does not exist
return true_platform
Run Code Online (Sandbox Code Playgroud)
http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
许多这些提议的解决方案,例如platform.architecture(),都会失败,因为它们的结果取决于您运行的是32位还是64位Python.
我发现唯一可靠的方法是检查是否存在os.environ ['PROGRAMFILES(X86)'],这是不幸的.
| 归档时间: |
|
| 查看次数: |
36306 次 |
| 最近记录: |