2016-08-28 17 views
1

私はずっと長い間困惑しています。誰かが援助できると願っています。現在のコマンドプロンプトセッションの環境変数をPythonから設定する方法

現在のコマンドプロンプトセッション(Windows)用の一時的な環境変数(PATH)を設定する必要があるPython CLIアプリケーションを作成しています。アプリケーションは、hereと表示された方法を使用して、将来のすべてのセッションで永続的に環境変数を設定しています。

  • テンポラリファイルを利用した答えhereを使用して環境変数
  • を設定するos.environを使用して:

    が一時的ENVは、現在のセッションのvarsの設定しようとするために、私は次のよう試みました。残念ながら、これはCmdプロンプトから直接実行されますが、Pythonでは実行されません。
  • 彼らは私が永続的に設定した環境変数を活用するためには、コマンドプロンプトを閉じる必要はありませんので、ツールのユーザーがこれを必要としますsubprocess.check_call

subprocess.callを使用してSETを呼び出します。

私は他のアプリケーションでこれを行っているのを見ましたが、これをPythonでどのように達成するかはわかりません。

+1

私は決定的に話すことができませんWindows - しかし、UNIXでは、サブプロセスが環境変数を変更するための親プロセスの協力が必要です(デバッガを使用するなどの不備はありません)。 –

+1

@CharlesDuffy、技術的にはWindowsでは、親プロセスのハンドルを開き、親プロセスのDACL、整合性レベル、およびそれが '保護された'プロセスかどうかに応じて、環境変数を書き換えることが可能です。しかし、私はそれが今までにないと思う。 – eryksun

答えて

3

ブルートフォースが、簡単な標準出力にバッチスクリプトとして、あなたの割り当てを放出し、そして(bashでsourceに似て)既存のインタプリタでそのスクリプトを実行することです:

python myscript >%TEMP%\myscript-vars.bat 
call %TEMP%\myscript-vars.bat 
del %TEMP%\myscript-vars.bat 
+2

これを自動的に処理する別のバッチファイルからスクリプトを実行できます。ユーザーが現在のディレクトリへの書き込みアクセス権を持っていない可能性があるため、.batファイルを '%TEMP%'ディレクトリに書きたいとします。 – eryksun

+0

@eryksun、優れたポイントは両方とも、 '%TEMP%'提案ごとに更新されました。 –

関連する問題