Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung

Python für .NET kann in verschiedenen Umgebungen installiert werden, es gibt jedoch nicht viele Informationen darüber, welche Kombination möglich ist. Ich werde mich auf das konzentrieren, was ich getan habe. Ich werde in der Reihenfolge von dem beschreiben, der gemacht wurde.

Oh, ich verwende nur Python-> .NET-Richtungsaufrufe, kein Embedded Scripting.

Windows 10

Ich denke, dass dies hauptsächlich unter Windows 10 verwendet wird, also werde ich es dicker versuchen.

Die festen Bedingungen sind wie folgt.

Python.NET @ github

Da es wie folgt geschrieben ist, verwende ich grundsätzlich 3.7.

Python 3.8.0 support Some features are disabled in Python 3.8.0 because of this bug in Python. The error is System.EntryPointNotFoundException : Unable to find an entry point named 'Py_CompileString' in DLL 'python38'. This will be fixed in Python 3.8.1.

.NET Framework 4 (Erfolg)

Ich möchte, dass .NET 5 bald herauskommt, aber ich muss eine Weile warten, also von der alten Seite. Ich verwende .NET 4.6, das unter Windows 10 vorinstalliert ist.

Vorbereitung der .NET-Umgebung

Sie müssen nichts Besonderes tun. Es ist natürlich, weil es eine Standardumgebung ist.

Vorbereiten der Python-Umgebung

Ich habe gerade die Umgebung von Anaconda3 hinzugefügt und brauchte Tweak nicht.

Funktionsprüfung

Wenn dies keinen Fehler ergibt, sollte es Ihnen gut gehen.

import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form
import sys
print("OS : ", Environment.OSVersion.VersionString)
print("Python : " ,sys.version)
print(".NET : ", Environment.Version.ToString())
print("pythonnet : " , clr.__version__)

Ausführungsergebnis


OS :  Microsoft Windows NT 10.0.19041.0
python :  3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)]
.NET :  4.0.30319.42000
pythonnet :  2.4.0

Die Version von Windows 10 ist verdächtig, aber da. .. ..

.NET Standard Library Call (Erfolgreich)

Ab der neuesten Version 8.x von BayesServer kann es in .NET Standard bereitgestellt, Python für .NET (.NET Framework) -> sein Validierte einen Aufruf der .NET Standard-Bibliothek.

sys.path.append("C:/Program Files/Bayes Server/Bayes Server 8.16/API/DotNet/Standard20/")
clr.AddReference("BayesServer")
import BayesServer
network = Network()
network.Load("model.bayes")
print(network.Links.Count)

.NET Core

Ich weiß nicht, ob Desktop-Entwickler auf dem Niveau sind, auf dem sie eine Migration auf .NET Core in Betracht ziehen sollten, aber .NET Core 3.1 verfügt über Funktionen, die so gut wie Framework sind. Leider ist Pythonnet noch nicht fertig und es scheint, dass Sie Python nicht über .NET Core ausführen können. (Erstens ist so etwas nicht erlaubt)

Support for .NET Core? #243 @ github

.NET Core (CoreCLR) does not provide reverse pinvoke like .NET Framework on Windows, neither C++/CLI. Hence the only way to get this working is to embed .NET Core using C-API, like this is done for Mono. The problem is that C-API for CoreCLR looks quite different from Mono.

CoreCLR unterstützt kein Reverse P / Invoke, daher schreibe ich es als unmögliches Spiel. Ist es nicht in Ordnung, .NET Core aus Python zu erstellen? Ich denke.

Jedoch! Das Obige ist die Information für 2016, und die Situation wird in der folgenden Ausgabe von dort beschrieben.

.NET Core support and CoreCLR embedding - cross-platform API #96 @ github

denfromufa commented on Oct 17, 2018 Entsprechend dem folgenden Supportstatus.

Platform .NET-> Python Python -> .NET
Windows Tested Coded (npython.exe)
Linux Tested Tested (npython.exe)
OSX Coded Coded (npython.exe)

Wenn Sie .NET Core von Python aus aufrufen, gibt es anscheinend einige Einschränkungen, z. B. die npython-Einschränkung.

Linux

Es funktioniert als Brücke für Mono unter Linux.

Mono (Erfolg)

Installieren Sie Mono unten. Die Ausführungsumgebung ist fast fertig.

sudo apt-get install mono-complete

Laden Sie Pythonnet und überprüfen Sie es auf die gleiche Weise.

import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form

Ich benutze die Umgebung unter Ubuntu 16.04.6 LTS.

import sys
print("OS : ", Environment.OSVersion.VersionString)
print("python : " ,sys.version)
print(".NET : ", Environment.Version.ToString())
print("pythonnet : " , clr.__version__)

Ausführungsergebnis


OS :  Unix 4.15.0.1063
python :  3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31) 
[GCC 7.3.0]
.NET :  4.0.30319.42000
pythonnet :  2.4.0

.NET Standard Library Call (Erfolgreich)

Validierte Aufrufe der Python for .NET (Mono) -> .NET Standard .NET Standard-Bibliothek.

sys.path.append("/mnt/azmnt/code/Users/bayesserver-8.16/DotNet/Standard20")
clr.AddReference("BayesServer")
import BayesServer
network = Network()
network.Load("model.bayes")
print(network.Links.Count)

Es scheint irgendwie zu funktionieren.

.NET Core

Mac OSX

Mono

.NET Core

Recommended Posts

Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Überprüfen Sie das Verhalten des Zerstörers in Python
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Passen Sie die Verteilung jeder Gruppe in Python an
Code zum Überprüfen des Betriebs von Python Matplot lib
Wechseln Sie das zu ladende Modul für jede Ausführungsumgebung in Python
Überprüfen Sie, ob in Java BigQuery-Tabellen vorhanden sind
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
Überprüfen Sie Python auf Speicherlecks
Ermitteln Sie die Anzahl der Vorkommen für jedes Element in der Liste
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Wrap (Teil der) AtCoder Library in Cython zur Verwendung in Python
Überprüfen Sie die Zunahme / Abnahme der Bitmünzen für jede Adresse aus der Blockchain
[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv
So überprüfen Sie die Speichergröße einer Variablen in Python
Ändern Sie automatisch die Größe von Screenshots für den App Store für jeden Bildschirm in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
Python Hinweis: Map - Machen Sie dasselbe für jedes Element der Liste
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
Zusammenfassung verschiedener for-Anweisungen in Python
Überprüfen Sie, ob die URL in Python vorhanden ist
Das Ergebnis der Installation von Python auf Anaconda
Überprüfen Sie den Pfad des importierten Python-Moduls
MongoDB mit Python zum ersten Mal
Grundlagen zum Ausführen von NoxPlayer in Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Auf der Suche nach dem schnellsten FizzBuzz in Python
Status jedes Python-Verarbeitungssystems im Jahr 2020
Bereiten Sie eine Python-Entwicklungsumgebung für jedes Projekt in einer Windows-Umgebung vor (VSCode + virtualEnvWrapper + Pylint).
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
Notiz der Pixelpositionsoperation für Bilddaten mit Python (numpy, cv2)
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[Python] Grund für den Typ "int32" in Numpy (Windows-Umgebung) (Stand September 2020)
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python
CERTIFICATE_VERIFY_FAILED in Python 3.6, dem offiziellen Installationsprogramm für macOS
Geben Sie die Anzahl der CPU-Kerne in Python aus
Überprüfen Sie den Betrieb von OpenCV3, das von Anaconda installiert wurde
Die Geschichte, dass die Lernkosten von Python niedrig sind
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Überprüfen Sie, ob die Zeichen in Python ähnlich sind
Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
Unbeaufsichtigter Betrieb von Google Spreadsheets (usw.) in Python
Holen Sie sich den Aufrufer einer Funktion in Python
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Kopieren Sie die Liste in Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Installieren Sie das Python-Paket in einer Offline-Umgebung
Tipps zum Erreichen der ATND-API mit Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Bildverarbeitung? Die Geschichte, Python für zu starten
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
Ausgabe in Form eines Python-Arrays