Pythonを使用してプラットフォームに依存しない方法でPATH
環境変数を変更する方法はありますか?Python:PATH環境変数を変更するプラットフォームに依存しない方法
os.path.join()
と似たようなもの?
Pythonを使用してプラットフォームに依存しない方法でPATH
環境変数を変更する方法はありますか?Python:PATH環境変数を変更するプラットフォームに依存しない方法
os.path.join()
と似たようなもの?
os.environ
を変更できるはずです。
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
:リストに追加するには、いくつかのパスがある場合、
os.environ["PATH"] += os.pathsep + path
か:os.pathsep
以来
はあなたがそれぞれの新しいパスを追加するためにこれを使用する必要があり、異なるパスを分離する文字です
あなたが言及したように、os.path.join
は、別々の部分からそれらを構築する必要がある場合に追加する必要がある個々のパスごとに使用することもできます。
Pythonで環境変数を変更することに注意しなければならないのは、 "export"シェルコマンドに相当するものがないことです。現在のプロセスに変更を注入する方法はなく、子プロセスだけです。
+1:それを指摘することを賢明に言うために、 'os.system'、' os.popen'や 'subprocess.Popen'のようなコマンドをPythonアプリケーションから使用して他のプロセスを起動する必要があります。そうでなければ、それはかなり無意味です。 – RedGlyph
これは当てはまりません。 – Glyph
Glyphのステートメントの明確化:変更は*現在のプロセス(これはPythonプロセス)に注入されるため、これは当てはまりません。 OPは、親プロセス(通常はPythonスクリプトが実行されたシェル)に変更を注入する方法がないことを意味します。 – PonyEars
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'に本当にコメントです。)
何PATH環境セパレータで? ? linux -/usr/bin:/ lib: ":" windows - C:\ asdf \; C:\ Prog ...; ";" – bua
@bua:私が言及した 'os.pathsep'(PATH特有)を意味しますか? – RedGlyph
ありがとう、それは私が探していたものです。 – resi