我正在使用
从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脚本时,它只运行第一个脚本,而第二个脚本永远不会被调用。
我迷失了这个。我可以确认它与以下内容无关:权限,依赖性。
为可以解决这个问题的人提供金牌和比萨饼。
答案 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。