问题从铁python脚本调用python脚本(从c#脚本引擎调用)

时间:2014-05-08 11:46:04

标签: c# python asp.net python-2.7 ironpython

我正在使用

从c#调用铁python脚本
        ScriptRuntimeSetup setup = Python.CreateRuntimeSetup(null);
        ScriptRuntime runtime = new ScriptRuntime(setup);
        ScriptEngine engine = Python.GetEngine(runtime);

        ScriptSource source = engine.CreateScriptSourceFromFile("C:/KitGenerator/KitGenerator/LoadKitsFromDatabase.py");
        ScriptScope scope = engine.CreateScope();
        source.Execute(scope);

这很好用并且使用打印输出我已经证明代码运行正常。 但是在铁python脚本中是对另一个python脚本的调用

os.system("ipython C:\KitGenerator\Kit-Generator\GenerateKitImages.py")

(我已经尝试过(ipython“GenerateKitImages.py”)

问题: 当我使用Ipy.exe运行第一个铁python脚本时,两者运行完全正常并按预期执行。 但是,当我使用c#脚本引擎运行第一个铁python脚本时,它只运行第一个脚本,而第二个脚本永远不会被调用。

我迷失了这个。我可以确认它与以下内容无关:权限,依赖性。

为可以解决这个问题的人提供金牌和比萨饼。

1 个答案:

答案 0 :(得分:2)

首先,os.system调用应该使用raw(r“”)字符串:

os.system(r"ipython C:\KitGenerator\Kit-Generator\GenerateKitImages.py")

否则反斜杠会导致问题。

但是,既然你说它可以在ipy.exe上运行,我的猜测是ipython在你PATH的第一种情况下,而不是第二种情况。您可以设置PATH environment variable from C#,在ipython调用中包含os.system的完整路径,或者在changing it globally之前确保在调用C#程序之前设置了PATH。