web-dev-qa-db-ja.com

Python:PATH環境変数を変更するプラットフォームに依存しない方法

Pythonを使用してプラットフォームに依存しない方法でPATH環境変数を変更する方法はありますか?

os.path.join()に似たものですか?

77
resi

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

os.pathsepは異なるパスを区切る文字です。これを使用して、新しい各パスを追加する必要があります。

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

または、リストに追加するパスが複数ある場合:

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

あなたが述べたように、os.path.joinは、個別の部分からパスを作成する必要がある場合に追加する必要がある個々のパスごとに使用することもできます。

149
RedGlyph

その点に注意してください os.environは実際には辞書ではありません。これは特別なディクショナリです-likeオブジェクトは setenv を使用して現在のプロセスで環境変数を実際に設定します。

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

これは、PATH(およびその他の環境変数)が同じプロセスで実行されるCコードから見えることを意味します。

(コメントには書式を含めることができないため、これを回答に入れなければなりませんが、それは重要なポイントだと感じています。これは、実際には 「エクスポート」に相当するものがないというコメント 。)

17
Glyph

Pythonで環境変数を変更する際の注意点は、「export」シェルコマンドに相当するものがないことです。現在のプロセスに変更を注入する方法はなく、子プロセスのみです。

6
Matt T