Python在64位vista上为os.environ[“ProgramFiles”获取错误的值

Python在64位vista上为os.environ[“ProgramFiles”获取错误的值,python,windows,64-bit,Python,Windows,64 Bit,Vista64机器上的Python 2.4.3 环境中有以下两个变量: ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) 但是当我运行以下命令时 import os print os.environ["ProgramFiles"] print os.environ["ProgramFiles(x86)"] 我得到: C:\Program Files (x86) C:\Program Files (x8

Vista64机器上的Python 2.4.3

环境中有以下两个变量:

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
但是当我运行以下命令时

import os
print os.environ["ProgramFiles"]
print os.environ["ProgramFiles(x86)"]
我得到:

C:\Program Files (x86)
C:\Program Files (x86)
您知道如何从以下位置获取“ProgramFiles”的正确值吗?

%程序文件%

此变量指向Program Files目录,该目录存储Windows和其他系统的所有已安装程序。英语语言系统的默认值是C:\Program Files。在64位版本的Windows(XP、2003、Vista)中,还有%ProgramFiles(x86)%s默认为C:\Program Files(x86)和%ProgramW6432%默认为C:\Program Files。%ProgramFiles%本身取决于请求环境变量的进程本身是32位还是64位(这是由Windows on Windows 64位重定向引起的)


因此,要获取C:\Program文件,您显然需要检查
%ProgramW6432%
是否可以安装Python 2.5.4并重试?更新:我指的是2.5.4的x64版本。AFAIK 2.4仅适用于Windows x86和IA64,而不适用于x64

我在Win7x64上运行2.5.4x64,但没有得到相同的结果,但我不确定您的问题是否出在Python或Vista上

Python 2.5.4 (r254:67916, Dec 23 2008, 15:19:34) [MSC v.1400 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ["ProgramFiles"]
C:\Program Files
>>> print os.environ["ProgramFiles(x86)"]
C:\Program Files (x86)
>>>

您正在使用32位版本的Python解释器。当使用32位软件时,WOW64将创建一个新的环境,它拥有自己的文件夹和替换

只需启动64位和32位版本的命令提示符,您就可以看到我所说的内容:

64位cmd.exe:

C:\Documents and Settings\Administrator>set prog
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
C:\WINDOWS\SysWOW64>set prog
ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
32位cmd.exe:

C:\Documents and Settings\Administrator>set prog
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
C:\WINDOWS\SysWOW64>set prog
ProgramFiles=C:\Program Files (x86)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
从上面的第二段摘录中可以看到,要获取64位程序文件,必须使用
ProgramW6432
环境变量


然而,另一种方法也可以解决将来可能出现的其他问题(尤其是注册表设置!):只使用64位版本的Python——即使我不知道从哪里下载64位版本的2.4。

Python x32和x64之间唯一的区别是
os.environ[“ProgramFiles”]
。因此,如果希望在两种Python平台上都安全,请使用
ProgramW6432
ProgramFiles(x86)
,但不要使用
ProgramFiles

Python 3 x64(在Win10 x64上):

Python 3 x32:

>>> import os
>>> os.environ["ProgramFiles"]
'C:\\Program Files (x86)'
# The other paths are similar to x64

根据python可执行文件是32位还是64位,此行为会有所不同。请说明是哪一种。