2009-08-16 38 views
3

在Vista64機器上的Python 2.4.3。Python在64位Vista上得到錯誤的值os.environ [「ProgramFiles」]

以下兩個變量在環境中:

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」的正確值?

+1

此行爲因您的python可執行文件是32位還是64位而不同。請說明。 – Macke 2011-02-08 13:10:16

回答

11

Wikipedia page

的%ProgramFiles%

此變量指向Program Files目錄下,它存儲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%

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) 
>>> 
6

您正在使用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) 

32位CMD.EXE:

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版本。

相關問題