我正在使用 C# 调用 Iron 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 运行第一个 Iron Python 脚本时,两者都运行得很好并且按预期执行。 然而,当我使用 C# 脚本引擎运行第一个 Iron Python 脚本时,它只运行第一个脚本,而永远不会调用第二个脚本。
我对这个迷失了。我可以确认这与:权限、依赖关系无关。
奖励能够解决这个问题的人的金牌和披萨。
最佳答案
首先,os.system
调用应使用原始 (r"") 字符串:
os.system(r"ipython C:\KitGenerator\Kit-Generator\GenerateKitImages.py")
否则反斜杠会导致问题。
但是,既然您说它可以从 ipy.exe 运行,我的猜测是 ipython
在您的 PATH 上。在第一种情况下,而不是在第二种情况下。您可以设置路径 environment variable from C# ,在 os.system
调用中包含 ipython
的完整路径,或者确保在调用 C# 程序之前设置 PATH,通过 changing it globally .
关于c# - 从 Iron Python 脚本(从 C# 脚本引擎调用)调用 Python 脚本时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23540828/