Ist es möglich, Python nativ kompiliert (über pyc-Byte-Code)?
-
03-07-2019 - |
Frage
Ich frage mich, ob es möglich ist, ein ausführbares Modul aus einem Python-Skript zu erstellen. Ich brauche die Maximum an Leistung und die Flexibilität von Python-Skript haben, ohne in der Python-Umgebung ausgeführt werden muß. Ich würde diesen Code verwenden, um auf die Nachfrage Anwendermodule zu laden, um meine Anwendung anpassen.
Lösung
- Es gibt Pyrex , die Python wie Quelle kompiliert python-Erweiterungsmodule
- rpython , die Sie Python mit einigen Einschränkungen zu verschiedenen Backends wie C kompilieren können, LLVM, .Net usw.
- Es gibt auch Schuppen-Haut den Python C ++ übersetzt, aber ich kann nicht sagen, ob es gut ist .
- PyPy implementiert einen JIT-Compiler, die Laufzeit zu optimieren versucht durch übersetzen Stücke von dem, was zur Laufzeit in Maschinencode ausgeführt ist, wenn Sie für den PyPy Interpreter schreiben, das ein gangbarer Weg sein könnte.
- Der gleiche Autor, der auf JIT in PyPy arbeitet schrieb psyco zuvor die Python im CPython Interpreter optimiert .
Andere Tipps
Sie können so etwas wie py2exe benutzen, um Ihren Python-Skript in eine exe zu kompilieren, oder für ein Linux-Binär-Frieren.
siehe: Wie kann ich eine direkt ausführbare Cross-Plattform-GUI-Anwendung mit Python erstellen
Ich habe viel Erfolg hatte mit Cython , die auf basiert und sich Pyrex:
Cython ist eine Sprache, macht Schreiben C-Erweiterungen für den Python Sprache so einfach wie Python selbst. Cython basiert auf dem gut bekannten Pyrex, unterstützt aber mehr Schneidkante Funktionalität und Optimierungen.
Die Cython Sprache ist ganz in der Nähe die Sprache Python, aber Cython unterstützt zusätzlich C Aufruf Funktionen und erklärt C-Typen auf Variablen und Klassenattribute. Diese ermöglicht es dem Compiler sehr zu generieren effizienter C-Code aus Cython Code.
Das macht Cython die ideale Sprache für externe C-Bibliotheken Einwickeln, und für die schnelle C-Module, die beschleunigen die Ausführung von Python-Code.
Ich glaube, Sie jython Python Java-Bytecode kompiliert verwenden können, und dann kompilieren, dass mit GCJ.