2009-08-16 9 views
3

Vista64マシンのPython 2.4.3。Pythonがos.environ ["ProgramFiles"] for 64bit vistaで間違った値を取得する

ProgramFiles=C:\Program Files 
ProgramFiles(x86)=C:\Program Files (x86) 

しかし、私は、次の

import os 
print os.environ["ProgramFiles"] 
print os.environ["ProgramFiles(x86)"] 

を実行したときに私が手::

次の2つの変数が環境にある

C:\Program Files (x86) 
C:\Program Files (x86) 

私は得ることができますどのように任意のアイデア"ProgramFiles"の正しい値? Wikipedia pageから

+1

この動作は、Python実行可能ファイルが32ビットか64ビットかによって異なります。どちらを挙げてください。 – Macke

答えて

11

Windowsと他のすべてのインストールされたプログラムを格納Program Filesディレクトリ、この変数ポイント

%のPROGRAMFILES%です。英語のシステムのデフォルトはC:\ Program Filesです。 Windows(XP、2003、Vista)の64ビット版には、デフォルトでC:\ Program Files(x86)の%ProgramFiles(x86)%とデフォルトでC:\ Program Filesの%ProgramW6432%があります。 %ProgramFiles%自体は、環境変数を要求するプロセス自体が32ビットまたは64ビット(これはWindows-on-Windows 64ビットリダイレクトによって引き起こされる)であるかどうかによって異なります。

C:\ Program Filesだけを取得するには、明らかに%ProgramW6432%にチェックしてください。

4

Python 2.5.4をインストールして再試行できますか?アップデート:2.5.4のx64リリースを意味しました。 AFAIK 2.4は、x64ではなく、Windows x86とIA64でのみ使用できました。

私は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ビットのプログラムファイルを取得するには、上述した第2の抜粋からわかるように、あなたはProgramW6432環境変数を使用する必要があります。

しかし、将来(特にレジストリ設定で)発生する可能性のある他の問題も解決できる可能性があります:64ビット版のPythonを使用してください。 2.4のバージョン。

関連する問題