2009-11-05 15 views

答えて

110

os.environを変更できるはずです。

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist) 
:リストに追加するには、いくつかのパスがある場合、

os.environ["PATH"] += os.pathsep + path 

か:os.pathsep以来

はあなたがそれぞれの新しいパスを追加するためにこれを使用する必要があり、異なるパスを分離する文字です

あなたが言及したように、os.path.joinは、別々の部分からそれらを構築する必要がある場合に追加する必要がある個々のパスごとに使用することもできます。

+0

何PATH環境セパレータで? ? linux -/usr/bin:/ lib: ":" windows - C:\ asdf \; C:\ Prog ...; ";" – bua

+2

@bua:私が言及した 'os.pathsep'(PATH特有)を意味しますか? – RedGlyph

+0

ありがとう、それは私が探していたものです。 – resi

6

Pythonで環境変数を変更することに注意しなければならないのは、 "export"シェルコマンドに相当するものがないことです。現在のプロセスに変更を注入する方法はなく、子プロセスだけです。

+0

+1:それを指摘することを賢明に言うために、 'os.system'、' os.popen'や 'subprocess.Popen'のようなコマンドをPythonアプリケーションから使用して他のプロセスを起動する必要があります。そうでなければ、それはかなり無意味です。 – RedGlyph

+8

これは当てはまりません。 – Glyph

+3

Glyphのステートメントの明確化:変更は*現在のプロセス(これはPythonプロセス)に注入されるため、これは当てはまりません。 OPは、親プロセス(通常はPythonスクリプトが実行されたシェル)に変更を注入する方法がないことを意味します。 – PonyEars

14

os.environは実際には辞書ではありません。これは特別な辞書ですのようにを使って現在のプロセスで環境変数を実際に設定するオブジェクトはです。

>>> os.environ.__class__ 
<class os._Environ at 0x100472050> 
>>> import os 
>>> os.environ["HELLO"] = "WORLD" 
>>> os.getenv("HELLO") 
'WORLD' 

これはPATH(および他の環境変数)同じプロセスでCコードの実行に見えるであろうことを意味します。

(コメントは書式設定を含めることはできませんので、私は答えにこれを配置する必要がありますが、それは作るために重要なポイントだように私は感じる。これはthe comment about there being no equivalent to 'export'に本当にコメントです。)

関連する問題