exécuter un script python en C #

J’essaye d’exécuter un code python en C #. Normalement, cela devrait être fait avec IronPython et après l’installation de PTVS (j’utilise VS 2010).

var pyEngine = Python.CreateEngine(); var pyScope = pyEngine.CreateScope(); try { pyEngine.ExecuteFile("plot.py", pyScope); } catch (Exception ex) { Console.WriteLine("There is a problem in your Python code: " + ex.Message); } 

Le problème est qu’il semble que IronPython ne reconnaît pas certaines bibliothèques telles que numpy, pylab ou matplotlib. J’ai jeté un coup d’œil et j’ai trouvé des gens qui parlaient d’Enthought Canopy ou d’Anaconda, que j’ai tous les deux installés sans résoudre le problème. Que dois-je faire pour résoudre le problème?

Pour exécuter un script Python qui importe certaines bibliothèques telles que numpy et pylab, il est possible de créer ceci:

  ssortingng arg = ssortingng.Format(@"C:\Users\ayed\Desktop\IronPythonExamples\RunExternalScript\plot.py"); // Path to the Python code Process p = new Process(); p.StartInfo = new ProcessStartInfo(@"D:\WinPython\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\python.exe", arg); p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; // Hide the command line window p.StartInfo.RedirectStandardOutput = false; p.StartInfo.RedirectStandardError = false; Process processChild = Process.Start(p.StartInfo); 

Si vous exécutez votre code, IronPython recherchera uniquement le script dans le répertoire de travail en cours. Vous devez append quelques chemins de recherche supplémentaires. Cela fait partie d’un ancien code d’intégration de mon application utilisant ironpython:

 var runtimeSetup = Python.CreateRuntimeSetup(null); runtimeSetup.DebugMode = false; runtimeSetup.Options["Frames"] = true; runtimeSetup.Options["FullFrames"] = true; var runtime = new ScriptRuntime(runtimeSetup); var scriptEngine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName); // Set default search paths ICollection searchPaths = scriptEngine.GetSearchPaths(); searchPaths.Add("\\Scripts\\Python"); scriptEngine.SetSearchPaths(searchPaths); 

L’astuce consiste à append tous les chemins de cette ligne de code: scriptEngine.SetSearchPaths(searchPaths); . Si vous ajoutez ici le répertoire qui contient plot.py , tout devrait fonctionner.

J’espère que cela t’aides.