Pythonスクリプトを実行するために、IronPythonインタプリタをC#アプリケーションに埋め込みました。スクリプトは特定の環境変数VAR1
を使用して評価しますos.environ['VAR1']
IronPythonの埋め込みと環境変数の上書き
スクリプトを実行する前に一時的にVAR1
の値を変更する必要があります。これを行うには、
Environment.SetEnvironmentVariable("VAR1", "NEW_VALUE");
をC#コードで呼び出します。残念ながら、これは動作しません。 Pythonスクリプトでは、以前の値VAR1
(ホストC#アプリケーション起動時の値)は引き続き「見えます」。ここで
は、完全なサンプルコードです:
Environment.SetEnvironmentVariable("VAR1", "NEW_VALUE");
var engine = Python.CreateEngine();
engine.SetSearchPaths(new string[] { @"c:\Program Files (x86)\IronPython 2.7\Lib\" });
var ms = new MemoryStream();
engine.Runtime.IO.SetOutput(ms, Encoding.Unicode);
var script = engine.CreateScriptSourceFromString("import os\nprint os.environ['VAR1']");
script.Execute();
System.Windows.Forms.MessageBox.Show(Encoding.Unicode.GetString(ms.ToArray()));
私の理解では、IronPythonのエンジンは、C#ホストアプリケーションと同じプロセスで実行されることです。これが正しい場合、PythonコードとC#コードはどのように異なる環境変数を参照できますか?
Pythonスクリプトの環境変数を設定する方法はありますか?