Ich habe ein Python-Modul mit nichts als regulären globalen Funktionen. Ich muss es von einer anderen Business-Domain-Scripting-Umgebung aufrufen, die nur C-DLLs aufrufen kann. Gibt es überhaupt eine Möglichkeit, meine Python-Module so zu erstellen, dass sie bei anderem Code wie eine Standard-C-Funktion aufgerufen werden können, die aus einer DLL exportiert wird? Dies ist für eine Windows-Umgebung. Ich kenne IronPython, aber soweit ich weiß, kann es nur .NET-Assemblies erstellen, die nicht als C DLL-Funktionen aufgerufen werden können.Gibt es eine Möglichkeit, eine C-ähnliche DLL aus einem Python-Modul zu erstellen?
Antwort
Werfen Sie einen Blick auf this Codeproject Artikel. Eine Möglichkeit wäre, Ihre Python-Funktionen in eine C-DLL zu packen und diese dem Angerufenen zur Verfügung zu stellen.
COM ist ein Binärprotokoll, um dieses Problem zu lösen. Aber Sie müssen diese Python-DLL in einen COM-Wrapper umbrechen. Und fügen Sie auch Code auf der anrufenden Seite hinzu.
Die Standardlösung besteht darin, den Python-Interpreter (der bereits eine C-DLL ist) in Ihre Anwendung einzubetten.
https://docs.python.org/extending/windows.html#using-dlls-in-practice
Py2exe COM DLLs aus Python-Code erzeugen kann, durch Kompilieren und Python-Code + Interpreter einzubetten. Es unterstützt keine regulären DLLs, AFAIK. Siehe dazu die Dirkently-Antwort zum Einbetten von Python selbst.
- 1. Gibt es eine Möglichkeit, eine DLL-Version zu erzwingen?
- 2. Einfachste Möglichkeit, eine Zeichenfläche aus einer C++ - DLL zu erstellen?
- 3. Gibt es eine Möglichkeit, eine Klasseneigenschaft in Python zu erstellen?
- 4. Gibt es eine einfache Möglichkeit, eine .exe-Datei aus C-Quelldateien auf einem Mac zu erstellen?
- 5. Gibt es eine Möglichkeit, eine Access-Datenbank aus einem Visio-Datenbankmodell zu erstellen?
- 6. Gibt es eine Möglichkeit, eine benutzerdefinierte Toastbenachrichtigung zu erstellen?
- 7. Gibt es eine schmerzfreie Möglichkeit, eine "css sandbox" zu erstellen?
- 8. Gibt es eine Möglichkeit, eine leere .mo-Dateivorlage zu erstellen?
- 9. Gibt es eine Möglichkeit, eine Gleitkommazahl ohne ldexp zu erstellen?
- 10. Gibt es eine Möglichkeit für DBUnit, Tabellen automatisch zu erstellen?
- 11. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 12. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 13. Gibt es eine schnelle Möglichkeit, ein Set zu erstellen?
- 14. Gibt es eine Möglichkeit, TypeScript-Klassen in Closures zu erstellen?
- 15. Gibt es eine Möglichkeit, alle Dateien aus einem Blob azurblauen
- 16. Gibt es eine Möglichkeit, einen direkten ByteBuffer aus einem Zeiger nur in Java zu erstellen?
- 17. Gibt es eine Möglichkeit, eine Crystal Reports 9.0-Datei aus einem Stream zu laden?
- 18. Gibt es eine Möglichkeit, ein eigenes HTML-Element zu erstellen?
- 19. Gibt es eine bessere Möglichkeit, solche Listen zu erstellen?
- 20. Gibt es eine Möglichkeit, einen Z-Index-Kreis zu erstellen?
- 21. Gibt es eine Möglichkeit, einen Pfadverlauf in JavaFX zu erstellen?
- 22. Gibt es eine bessere Möglichkeit, diesen LINQ-Anweisungsblock zu erstellen?
- 23. Gibt es eine Möglichkeit, transparente Fenster mit Tkinter zu erstellen?
- 24. Gibt es eine Möglichkeit, so schnelle Frameworks zu erstellen?
- 25. (Batch) Gibt es eine Möglichkeit, anklickbare Schaltflächen zu erstellen?
- 26. Gibt es eine einfache Möglichkeit, einen Code TextBox zu erstellen?
- 27. Gibt es eine Möglichkeit, ein unveränderliches (schreibgeschütztes) XDocument zu erstellen?
- 28. Objektorientierte Programmierung: Gibt es eine andere Möglichkeit, Objekte zu erstellen?
- 29. Gibt es eine Möglichkeit, Nunit Setup mit Argumenten zu erstellen
- 30. Gibt es eine Möglichkeit, einen Sicherungspunkt ohne Transaktion zu erstellen?
+1: der einfachste Weg – jfs