2014-05-08 11 views
2

J'appelle un script python de fer de C# en utilisantProblème appeler un script python à partir d'un script python de fer (qui est appelé à partir du moteur C# script)

 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); 

Cela fonctionne bien et en utilisant des sorties d'impression i AVONS prouvé que le code fonctionne correctement. Cependant dans le script python de fer est un appel à un autre script python

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

(Je l'ai essayé avec juste (ipython « GenerateKitImages.py »)

LA QUESTION: Quand je lance le premier fer Le script python utilisant Ipy.exe fonctionne parfaitement et fonctionne comme prévu Cependant, lorsque je lance le premier script de fer python en utilisant le moteur de script C#, il ne lance que le premier script et le second script n'est jamais appelé. J'ai perdu sur celui-ci, je peux confirmer qu'il n'y a rien à faire h: autorisations, dépendances.

une médaille d'or et une pizza pour l'homme qui peut résoudre ce problème.

Répondre

2

En premier lieu, l'appel os.system doit utiliser une chaîne brute (r ""):

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

Sinon, les anti-slash causeront des problèmes.

Cependant, puisque vous avez dit que cela fonctionne depuis ipy.exe, je suppose que ipython est sur votre PATH dans le premier cas et non le second cas. Vous pouvez définir le CHEMIN environment variable from C#, inclure le chemin complet à ipython dans l'appel os.system ou vous assurer que le chemin est défini avant d'appeler le programme C#, par changing it globally.

+0

Avez-vous reçu votre pizza gratuite? – Robino

Questions connexes