Как мне запустить внешний скрипт на python, который сам импортирует стороннюю библиотеку, в C #? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытался объединить код Python с C #, чтобы использовать все эти классные библиотеки, как распознавание речи, в моем приложении C #.

Я сделал два разных проекта, один для Python (IronPython), где я включил нужный мне модуль ( Распознавание речи ) через среду Python в VS2017, а другой - просто консоль.приложение, где я хочу назвать это приложение.

Я думал, что смысл состоит в том, чтобы изменить searchPaths Ironpython, и после этого он будет работать.

Может быть, я что-то делаю не так или, может, это просто не должно работать в любом случае?


Код C # Main.cs:

using IronPython.Hosting;
using System.Collections.Generic;
private static void Main(string[] args)
    {
        //Using Iron python
        var engine = IronPython.Hosting.Python.CreateEngine();
        System.Console.WriteLine("Search paths:");
        ICollection<string> searchPaths = engine.GetSearchPaths();
        foreach (string path in searchPaths)
        {
            System.Console.WriteLine(path);
        }
        System.Console.WriteLine();           
        searchPaths.Add("..\\..");
        ///Trying to add a searchPath for the place with the module I need
        searchPaths.Add(@"C:\Program Files (x86)\Microsoft Visual
        Studio\Shared\Anaconda3_64\Lib\site-packages");
        engine.SetSearchPaths(searchPaths);
        var res = engine.CreateScriptSourceFromFile(
        @"D:\Python\Projects\TestSpeechRecognition
        \TestForNETinPython\TestForNETinPython.py"
        );
        engine.ImportModule("speech_recognition");
        var result = res.Execute();
   }

Код Python

 import speech_recognition as sr
 r = sr.Recognizer()
 with sr.Microphone() as source: 
    print ("Hello: ")
    audio = r.listen(source)
 try:
   print ("I said: " + r.recognize_google(audio))
except sr.UnknownValueError:
   print ("Cant't rec")
except sr.RequestError as e:
   print ("Can't connect: (0)".format(e))

Исключение:

Необработанное исключение: IronPython.Runtime.Exceptions.ImportException: нет модуля с именем speech_recognition в IronPython.Hosting.PythonService.ImportModule (обработчик ScriptEngine, имя строки) в IronPython.Hosting.Python.ImportModule (обработчик ScriptEngine, String moduleNameM (String moduleNameM) (String moduleNameM) (String moduleNameM) (Test.Program)] args) в D: \ Python \ Projects \ TestSpeechRecognition \ Test \ Program.cs: строка 26

Я даже читал некоторую литературу о создании таких модулей, как этот http://www.needfulsoftware.com/IronPython/IronPythonCS2 или этотодин для Pythonnet и немного жуткий, но я думаю, что это может быть полезно ( NoteBook ).
Надеюсь, кто-то может использовать его для решения проблемы.

...