2014-05-08 65 views
2

我打電話從C#使用問題調用由鐵python腳本Python腳本(這是從C#腳本引擎調用)

 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腳本里面是另一個python腳本調用

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

(我曾經使用過(IPython的「GenerateKitImages.py」)

問題試了一下: 當我運行的第一鐵但是,使用Ipy.exe的python腳本運行得非常好,並且按照預期運行。 但是,當我運行第一個使用c#腳本引擎的腳本python腳本時,它只運行第一個腳本,第二個腳本也不會調用。

i'我失去了這一點,我可以證實這不是智慧h:權限,依賴關係。

金牌和比薩可以解決這個問題的人。

回答

2

首先,os.system調用應該使用原始(R 「」)的字符串:

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

否則反斜槓會導致一些問題。

但是,既然你說它從ipy.exe起作用,我的猜測是ipython在你的PATH在第一種情況下,而不是第二種情況。您可以設置PATH environment variable from C#,在os.system調用中包含ipython的完整路徑,或確保在調用C#程序之前設置PATH,設置爲changing it globally

+0

你有免費的披薩嗎? – Robino