2016-08-11 17 views
0

環境変数を追加しようとしています。私がsetをcmdに書き込むと、そこにいて欲しい。どうすればそこに追加できますか?私は、環境変数を見つけることができていますが、私はCMDでsetを書き込まないときprint os.environを書くとき追加した環境変数を追加するには?

def read_json_dump(): 
    with open("apa.json") as f: 
     a = json.load(f) 
     for key, value in a.items(): 
      project_recipient_list = value['EMAIL'] 

      os.environ["$DEFAULT_RECIPIENTS"] = project_recipient_list 

は、私はこのようにやってみました。

+0

)os.environ' 'へ –

+2

変更は一時的なもので、現在のプロセスに影響を与えたり、任意のサブプロセスは、引数は(os.system'のようなものを始め、あなたのマシンからパス変数のコピーを投稿し 'と' popenの() 'を返します。 – martineau

答えて

2

http://code.activestate.com/recipes/159462-how-to-set-environment-variables/パー現在のプログラムの環境変数をPythonから変更して永続化させることはできませんが、必要な変数を設定するbatファイルからPythonコードを実行することで回避できます。

os.environで環境変数を読み取ることができます。これらは、os.putenv(key、value)を使用して(サブ・シェルのみのために)記述できます。しかし、pythonスクリプトが実行されている地球環境を直接変更する方法はありません。上記の[リンク先]に示されている間接的な方法は、使用される別のバッチファイルによって囲む環境にある一時バッチファイルPythonスクリプトを起動します。

...任意の式を評価し、結果を環境変数に割り当てることができます。セキュリティのために、eval()関数はstr()に置き換えることができます。

通常、環境変数への書き込みは、パイプまたは共通データファイルを介して値を共有することを避けるべきです。しかし、それが避けられない場合、上記のテクニックは効果的ですが、ハッキリですが回避策です。

+0

ヤップ、あなたが言ったように回避策を実行し、それは働いた。 – gants

0

os.environは、pythonプログラムの実行中だけ環境変数を設定します。

外部には反映されません。あなたはsetxコマンドを使用できる変数を保持したい場合には十分ではありませんはos.environを使用して

3

は、これらのenv VARSは例えば、窓の上に、保持されません:それは見え

import os 

os.system("setx $DEFAULT_RECIPIENTS [email protected]") 
関連する問題