0
我在C#應用程序中嵌入IronPython解釋器來執行Python腳本。該腳本使用os.environ['VAR1']
嵌入IronPython並覆蓋環境變量
評估特定環境變量VAR1
我需要在執行腳本之前暫時更改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腳本設置環境變量?