Ich erstelle eine Python-Anwendung und möchte meine Clients nicht zwingen, Python und Module zu installieren.
Gibt es also eine Möglichkeit, ein Python-Skript als eigenständige ausführbare Datei zu kompilieren?
python
executable
Jeff
quelle
quelle
Antworten:
Sie können mit py2exe wie bereits und Nutzung beantwortet cython Ihren Schlüssel konvertieren
.py
Dateien in.pyc
, C kompilierten Dateien, wie.dll
in Windows und.so
unter Linux, viel härter als üblich zurückzukehren.pyo
und.pyc
Dateien (und auch Performance - Gewinn!)quelle
Mit PyInstaller können Sie Python-Programme als eigenständige ausführbare Dateien verpacken. Es funktioniert unter Windows, Linux und Mac.
quelle
Vielleicht möchten Sie Nuitka untersuchen . Es nimmt Python-Quellcode und konvertiert ihn in C ++ - API-Aufrufe. Dann wird es in eine ausführbare Binärdatei (ELF unter Linux) kompiliert. Es gibt es schon seit einigen Jahren und es unterstützt eine Vielzahl von Python-Versionen.
Sie werden wahrscheinlich auch eine Leistungsverbesserung erhalten, wenn Sie es verwenden. Empfohlen.
quelle
Ich möchte einige nützliche Informationen zum Erstellen von eigenständigen Dateien unter Windows mit Python 2.7 zusammenstellen.
Ich habe py2exe verwendet und es funktioniert, aber ich hatte einige Probleme.
Es wurden einige Probleme beim Erstellen einzelner Dateien in Windows 64-Bit angezeigt : Die Verwendung von bundle_files = 1 mit py2exe funktioniert nicht .
Es ist erforderlich, eine setup.py-Datei zu erstellen, damit sie funktioniert. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
Ich hatte Probleme mit Abhängigkeiten, die Sie durch Importieren von Paketen in die Setup-Datei lösen müssen.
Ich konnte es nicht mit PyQt zusammenarbeiten lassen.
Aus diesem letzten Grund habe ich PyInstaller http://www.pyinstaller.org/ ausprobiert .
Meiner Meinung nach ist es viel besser, weil:
Ich schlage vor, beispielsweise eine .bat-Datei mit den folgenden Zeilen zu erstellen (pyinstaller.exe muss sich im Windows-Pfad befinden):
Sie können unter anderem eine einzelne Datei erstellen ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
Ich hatte nur ein Problem mit PyInstaller und Multiprocessing-Paket, das mit diesem Rezept behoben wurde: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Daher denke ich, dass PyInstaller zumindest für Python 2.7 eine bessere und einfachere Option ist.
quelle
--onefile
Flag hilft Ihnen nicht dabei, es unter Windows portierbar zu machen, da die ausführbare Datei weiterhin eine Verknüpfung mit derapi-ms-win-crt-runtime-l1-1-0.dll
Bibliothek (oder / und anderen) herstellen möchte, die über dasvcredist
Paket installiert werden muss . Eine Abhängigkeit ist also noch vorhanden und muss vor dem Ausführen installiert werden.Ja, es ist möglich, Python-Skripte in eigenständige ausführbare Dateien zu kompilieren.
Mit PyInstaller können Python-Programme unter Windows , Linux , Mac OS X , FreeBSD , Solaris und AIX in eigenständige ausführbare Dateien konvertiert werden . Es ist einer der empfohlenen Konverter.
py2exe konvertiert Python-Skripte nur in ausführbare Dateien auf der Windows-Plattform.
Cython ist ein statischer Compiler sowohl für die Programmiersprache Python als auch für die erweiterte Programmiersprache Cython.
quelle
Und eine dritte Option ist
cx_Freeze
die plattformübergreifende.quelle
cx_Freeze
seit Ende 2017 gibt es keine aufgelisteten Veröffentlichungen auf pypi. Wurde dieses Projekt abgebrochen?Sie mögen vielleicht py2exe . Dort finden Sie auch Infos dazu unter Linux
quelle
Verwenden Sie py2exe .... Verwenden Sie die folgenden Setup-Dateien:
quelle
Ich mag Pyinstaller - besonders die "Fenster" -Variante:
Es wird eine einzelne * .exe-Datei in einem dist / -Ordner erstellt.
quelle
Ich empfehle auch Pyinstaller für eine bessere Abwärtskompatibilität wie Python 2.3 - 2.7.
Für py2exe benötigen Sie Python 2.6
quelle
Für Python 3.2-Skripte ist Cxfreeze die einzige Wahl. Erstellen Sie es aus Quellen, sonst funktioniert es nicht.
Für Python 2.x empfehle ich Pyinstaller, da es ein Python-Programm in einer einzigen ausführbaren Datei verpacken kann, im Gegensatz zu CxFreeze, das auch Bibliotheken ausgibt.
quelle
py2exe erstellt die gewünschte exe-Datei, Sie müssen jedoch dieselbe Version von MSVCR90.dll auf dem Computer haben, auf dem Sie Ihre neue exe verwenden möchten. Weitere Informationen finden Sie unter http://www.py2exe.org/index.cgi/Tutorial .
quelle
Die Liste der Verteilungsdienstprogramme finden Sie unter https://wiki.python.org/moin/DistributionUtilities .
Ich benutze bbfreeze und es hat sehr gut funktioniert (aber noch keine Python 3-Unterstützung).
quelle
.so
Dateien oder kopiert die .egg-Dateien direkt und sie müssen alle in einem einzigen Verzeichnis (oder als einzelne Datei) vorhanden sein. Es ist keine Installation erforderlich.Dadurch wird eine eigenständige EXE-Datei in Windows erstellt. WICHTIGER HINWEIS: Die exe-Datei wird in einem Ordner mit dem Namen 'dist' generiert.
Sie können Pyinstaller mit installieren
pip install PyInstaller
quelle
Nicht gerade eine Verpackung des Python-Codes, aber es gibt jetzt auch mürrisch von Google, das den Code in Go transpiliert. Die Python C-API wird nicht unterstützt, daher funktioniert sie möglicherweise nicht für alle Projekte.
quelle
Mit Pyinstaller habe ich eine bessere Methode gefunden, indem ich eine Verknüpfung zur EXE-Datei verwendet habe, anstatt sie zu erstellen
--onefile
. Wie auch immer, es gibt wahrscheinlich einige Datendateien und wenn Sie eine Site-basierte App ausführen, hängt Ihr Programm auch von HTML-, JS- und CSS-Dateien ab. Es macht keinen Sinn, all diese Dateien irgendwohin zu verschieben. Stattdessen, was ist, wenn wir den Arbeitspfad nach oben verschieben.Erstellen Sie eine Verknüpfung zur Exe, verschieben Sie sie nach oben und legen Sie die Ziel- und Startpfade wie angegeben fest, damit die relativen Pfade zum Ordner dist \ gehen:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
Kann die Verknüpfung zu einer beliebigen Umbenennung in "GTFS-Manager" umbenennen.Jetzt, wenn ich verdopple -Klicke auf die Verknüpfung, es ist, als hätte ich die Datei mit Python ausgeführt! Ich fand diesen Ansatz besser als den folgenden
--onefile
:Oh, denken Sie daran, den Build-Ordner nach dem Erstellen zu löschen, um Größe zu sparen.
quelle
Verwenden Sie Cython, um nach c zu konvertieren, zu kompilieren und mit gcc zu verknüpfen. Eine andere Möglichkeit besteht darin, die Kernfunktionen in c (die Funktionen, die Sie nur schwer rückgängig machen möchten) zu erstellen, sie zu kompilieren und den kompilierten Code mit Python Boost zu importieren (und Sie erhalten eine viel schnellere Codeausführung). Verwenden Sie dann ein beliebiges Werkzeug zum Verteilen.
quelle
Mir wurde gesagt, dass PyRun, https://www.egenix.com/products/python/PyRun/ , ebenfalls eine Option ist.
quelle