python在64位vista上得到os.environ 的错误值

在Vista64机器上的Python 2.4.3。

以下2个variables在环境中:

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”的正确价值?

从维基百科页面 :

的%ProgramFiles%

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

所以为了得到C:\ Program Files,你显然想检查%ProgramW6432%

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

您可以通过启动64位和32位版本的命令提示符来查看我在说什么:

64位cmd.exe:

 C:\Documents and Settings\Administrator>set prog ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) 

32位cmd.exe:

 C:\WINDOWS\SysWOW64>set prog ProgramFiles=C:\Program Files (x86) ProgramFiles(x86)=C:\Program Files (x86) ProgramW6432=C:\Program Files 

从上面的第二部分可以看到,要获得64位的Program Files,你必须使用ProgramW6432环境变量。

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

你可以安装Python 2.5.4并重试吗? 更新:我的意思是2.5.4的x64版本。 AFAIK 2.4只适用于Windows x86和IA64,而不是x64。

我在Win 7 x64上运行的是2.5.4 x64,但是我得不到相同的结果,但是我不确定问题出在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) >>>