Il modo consigliato per eseguire questa operazione è utilizzare IronPython. C'è un'altra risposta che spiega le basi dell'uso di IronPython per accedere al codice Python da C#: How do I call a specific Method from a Python Script in C#?
Se IronPython non è una scelta, come hai detto, puoi in alternativa eseguire la funzione dalla riga di comando e passare argomenti se necessario, anche se per qualcosa di complesso questo potrebbe trasformarsi in spaghetti. Di seguito è riportato un esempio di base di esecuzione di una funzione di pitone in un modulo direttamente dalla linea di comando:
python -c 'import foo; print foo.hello()'
Quindi, per eseguire il sopra in C#:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "python.exe";
startInfo.Arguments = "-c import foo; print foo.hello()";
process.StartInfo = startInfo;
process.Start();
Si noti che se si sta cercando di ottenere un restituire il valore, in questo caso sarà necessario stampare i dati sulla console e serializzare l'output da C# come meglio credi. Questo può essere potenzialmente problematico se la funzione restituisce qualsiasi cosa alla console, a meno che non la si filtri o vi sia un'opzione per sopprimere l'output da quella funzione.
fonte
2016-02-17 16:46:45
Hai guardato pythonnet? – denfromufa