2017-10-25 1 views
2

Ich möchte Python-Skript von C# (Visual Studio) ausführen. Ich möchte nicht C# -Prozess verwenden, weil ich Zugriff auf alle Python-Module, -Klassen und -Methoden haben muss (ich möchte es als Python-Objekt behandeln). Ich suche nach etw wie folgt aus:Python-Skript von C# aufrufen (objektorientierter Ansatz)

"Python-Code"

"PyModule"

class PyClass: 

    def method: 
     print("Hello world!") 

C# -Code

using PyModule.PyClass 

PyClass.method() 

ich python.net gefunden http://pythonnet.github.io/, aber sie sagen, dass ihre Lösung nicht verifizierbar ist. Ich muss es in Python 3 schreiben, also ist IronPython keine Lösung für mich.

Kennen Sie eine ähnliche Lösung?

+0

ist Sie aussehen könnte in [ IronPython] (https://github.com/IronLanguages/ironpython2). – alxwrd

+0

Entschuldigung, ich habe nicht erwähnt, dass ich Python 3 verwenden muss – konrado

Antwort

1

Nun, werfen Sie einen Blick in IronPython wie in den Kommentaren vorgeschlagen. Sie können Ihre Python-Skript, speichern Sie es auf, sagen wir, greet.py

def greet(name): 
    return 'Hello ' + name + '!' 

Jetzt von C# schreiben Sie tun können:

using IronPython.Hosting; 
using Microsoft.Scripting.Hosting; 

static void RunPythonScript() 
{ 
    var engine = Python.CreateEngine(); 
    dynamic scope = engine.CreateScope(); 

    engine.ExecuteFile("greeting.py", scope); 
    var greeting = scope.greet("John"); 

    Console.WriteLine(greeting); 
} 

Ergebnis wie man erwarten könnte Hello John!

+0

Sorry, ich habe nicht erwähnt, dass ich Python 3 verwenden muss. Ich habe gesehen, dass IronPython3 entwickelt wird, aber für jetzt ist es nicht vollständig getestet, so könnte es ein sein Problem, es zu benutzen. – konrado

Verwandte Themen