Wie installiere ich Python.NET für C # (VS2019) unter Windows 10 und für Python 3.8?

Aug 25 2020

Auf der offiziellen Website von Python.NET heißt es, dass Python 3.8 unterstützt wird. Großartig. Jetzt bin ich daran interessiert, meine vorhandenen Python 3.8-Module aus einer in C # (.NET Framework v4.7.2) entwickelten Anwendung aufzurufen.

EDITS:

Da die Autoren von Python.NET nahezu keine Installationsanweisungen für Aufrufe von C # geben, habe ich die hier angegebenen Anweisungen befolgt . Beachten Sie, dass ich Miniconda3 und Python 32bit verwende (letzteres wird für mein Projekt benötigt), also habe ich Folgendes getan:

  1. Von VScode aus habe ich Pythonnet mit pip installallen erforderlichen Python-Paketen (die wir numpyhier für den Zweck des Beispiels verwenden) unter der Umgebung "C: \ ProgramData \ Miniconda3 \ envs \ py38_32" installiert.

  2. Festlegen von Umgebungspfaden in C # (in VS2019):

    string pythonPath1 = @"C:\ProgramData\Miniconda3\envs\py38_32";
    string pythonPath2 = @"C:\ProgramData\Miniconda3\envs\py38_32\Lib\site-packages";
    Environment.SetEnvironmentVariable("PATH", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONHOME", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONPATH", pythonPath2, EnvironmentVariableTarget.Process);
  1. Referenzierte die Python.Runtime.dll aus dem Ordner "py38_32 \ Lib \ site-packages" in meinem Projekt und fügte sie hinzu using Python.Runtime;

  2. Versucht, numpy zu importieren:

    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy"); //fail on this line with ImportError
    }
    

Dort schlug der Numpy-Import mit "Python.Runtime.PythonException: 'ImportError" fehl. Es heißt auch "Die Python-Version ist: Python3.8 aus" \ bin \ Debug \ MyProject.exe "... scheint in meinem Debug-Ordner nach Python zu suchen und nicht in dem oben genannten Pfad ... vielleicht ... Das Importieren von numpy aus VScode in derselben Umgebung funktioniert einwandfrei.

Hat jemand eine Ahnung, was hier los ist?

Antworten

LOST Aug 26 2020 at 01:45

Die offizielle Installation von Python.NET erfolgt über den Python-Paketmanager pip.

Unter Windows wäre das python.exe -m pip install pythonnet. Das wird Python.Runtime.dllirgendwo in Ihrer Python-Distribution entstehen. Verweisen Sie einfach auf Ihr Projekt und stellen Sie sicher, dass die Architekturen übereinstimmen.

Eine nicht unterstützte Alternative besteht darin, meinen inoffiziellen Build zu verwenden und Runtime.PythonDLLden Speicherort python38.dllIhrer Wahl festzulegen (Sie können einen zur Laufzeit mit einem anderen NuGet-Paket finden: WhichPython ).

bricx Aug 26 2020 at 21:26

Wie hier erwähnt , funktioniert Anaconda (und Miniconda) nicht mit Python.NET. Alles, was ich tun musste, war, eine neue Kopie von Python mit dem gesamten benötigten Paket neu zu installieren und den folgenden Code durch die neuen Pfade zu ersetzen:

string pythonPath1 = @"C:\Python";
string pythonPath2 = @"C:\Python\Lib\site-packages";