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脚本设置环境变量?