Wie kann ich ein Python-Skript eigenständig ausführbar machen, um es ohne JEDE Abhängigkeit auszuführen? [duplicate]

Lesezeit: 8 Minuten

Benutzer-Avatar
Jeff

Ich baue eine Python-Anwendung und möchte meine Kunden nicht zwingen, Python und Module zu installieren.

Gibt es also eine Möglichkeit, ein Python-Skript als eigenständige ausführbare Datei zu kompilieren?

  • Der Teil der Frage, der besagt: „Ich möchte meine Clients nicht zwingen, Python und Module zu installieren.“ Es heißt nicht, dass die Clients es nicht können, es sagt, dass der Entwickler nicht verlangen möchte, dass sie es tun. Es hat keinen Sinn, den Punkt hier zu diskutieren, weil die Kunden SO nicht lesen, um für sich selbst zu sprechen. Ich möchte keine Flash-Entwicklungsumgebung installieren, nur um YouTube anzusehen, oder eine C-Entwicklungsumgebung, nur um Sudoku zu spielen, oder eine Python-Entwicklungsumgebung, um eine in Python geschriebene Version von Angry Birds auszuführen. Dafür sind verteilbare Laufzeiten da.

    – David

    11. November 2011 um 20:03 Uhr

  • Wäre eine Antwort mit vielen Dateien, aber nur einer zum Ausführen der Anwendung akzeptabel? Ich denke an eine Art Automatisierung des Packens der App + Anforderungen mit portabler Python-Distribution und erstelle ein Installationsskript, um es zu automatisieren.

    – np8

    16. November 2020 um 19:22 Uhr


Benutzer-Avatar
Rumple Stiltskin

Sie können verwenden PyInstaller um Python-Programme als eigenständige ausführbare Dateien zu packen. Es funktioniert unter Windows, Linux und Mac.

PyInstaller-Schnellstart

PyInstaller von PyPI installieren:

pip install pyinstaller

Gehen Sie in das Verzeichnis Ihres Programms und führen Sie Folgendes aus:

pyinstaller yourprogram.py

Dadurch wird das Bundle in einem Unterverzeichnis namens dist.

pyinstaller -F yourprogram.py

Durch Hinzufügen des Parameters -F (oder –onefile) wird alles in eine einzige “exe” gepackt.

pyinstaller -F --paths=<your_path>\Lib\site-packages  yourprogram.py

Wenn Sie auf “ImportError” stoßen, sollten Sie Nebenpakete in Betracht ziehen.

 pip install pynput==1.6.8

läuft immer noch in Import-Erorr – versuchen Sie, pyinstaller herunterzustufen – siehe Fehlermeldung bei der Verwendung von pynput mit pyinstaller

Eine ausführlichere Anleitung finden Sie unter Handbuch.

  • Es ist erwähnenswert, dass pyinstaller in eine einzelne .exe-Datei kompiliert werden kann. Auch auf welchem ​​OS es läuft, macht das ausführbar, dh .exe, wenn es unter Windows ausgeführt wird

    – Richard von Wit

    6. Juni 2014 um 14:17 Uhr


  • Wie @GeenHenk sagte, wenn Sie unter Windows “kompilieren”, wird eine Exe erstellt. Denken Sie daran, dass Sie unter Linux nicht für Windows kompilieren (eine Exe erstellen) oder ein Linux unter Windows ausführbar machen können. Sie können nur die ausführbare Datei der Plattform erstellen, die Sie ausführen. (Unter Linux können Sie dies mit wine austricksen)

    – PhoneixS

    13. Januar 2015 um 8:24 Uhr

  • Die Verwendung von ‘pyinstaller’ ist viel einfacher als ‘py2exe’. Es kümmert sich um alle Abhängigkeiten, einschließlich Numpy, Pandas, alles, und gibt Ihnen eine einzige ausführbare Datei auf der Arbeitsplattform!

    – bitte

    9. März 2016 um 5:00 Uhr

  • Scheint genau das zu sein, wonach ich gesucht habe. Und unterstützt jetzt Python 3! Vielen Dank 🙂

    – Daniel Gruszczyk

    30. August 2016 um 8:23 Uhr

  • Ich habe sie alle ausprobiert, der PyInstaller und andere (py2exe, freeze, cython, eingebettete Version von Python usw.) können immer noch nicht mit der Abhängigkeit der dynamischen Python-Bibliothek selbst umgehen, zumindest in Windows (python*.dll). Die DLL ist von der Laufzeit abhängig, die separat installiert werden muss. Nach dem Prozess erhalten Sie die ausführbare Datei, die mit der DLL verknüpft wird und somit die gleiche Importierbarkeit hat. Ihre “eigenständige” ausführbare Datei ist also nicht sehr eigenständig, sondern eher einbettbar. Um die Laufzeitabhängigkeit zu umgehen, MÜSSEN Sie Python aus der Quelle neu erstellen cpython Projekt.

    – Andry

    13. Juli 2017 um 8:33 Uhr


Benutzer-Avatar
Neurin

Sie können verwenden py2exe wie schon beantwortet und verwenden Cython um Ihren Schlüssel umzuwandeln .py Dateien hinein .pycC kompilierte Dateien, wie .dll unter Windows und .so auf Linux.

Es ist viel schwieriger, als gewöhnlich zurückzukehren .pyo und .pyc Dateien (und auch Performance-Gewinn!).

  • Danke für die Antwort. Ich habe Cython in Betracht gezogen, aber es scheint, dass Python immer noch benötigt wird, um kompilierte ausführbare Dateien auszuführen. Meinst du das Kompilieren von Skripts in .pyc mit Cython? (Ich wusste nicht, ob Cython eine solche Funktion hat)

    – Jeff

    28. März 2011 um 12:18 Uhr

  • Ich meine, du hast zwei Probleme: Closed Source und No-Deps. Für Closed Source kompilieren Sie Ihre wichtig Code in C-Bibliotheken mit Cython. Verwenden Sie für No-Deps py2exe und erstellen Sie eine ausführbare Datei mit .pyd-Dateien (cython-kompiliert) darin.

    – neurin

    28. März 2011 um 12:24 Uhr

  • Was würden Sie mit den Bibliotheken (numpy, scipy, matplotlib) tun? Wie könnten Clients beispielsweise die Funktion ginput() in matplotlib aus der ausführbaren Datei verwenden, ohne sie auf ihrem Computer installiert zu haben.

    – Schimpansen sind hungrig

    10. April 2013 um 18:04 Uhr

  • @chimpsarehungry was ist mit statischer Verlinkung?

    – Braden Best

    28. Januar 2015 um 7:15 Uhr

  • Die letzte Veröffentlichung scheint 2008 gewesen zu sein, wird diese noch beibehalten?

    – Zitrax

    17. September 2015 um 8:45 Uhr

Benutzer-Avatar
dunkel

Vielleicht möchten Sie nachforschen Nuitka. 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 unterstützt eine Vielzahl von Python-Versionen.

Sie werden wahrscheinlich auch eine Leistungsverbesserung erhalten, wenn Sie es verwenden. Es wird empfohlen.

  • Nuitka ist ein großartiges Werkzeug. Keine Notwendigkeit, es nicht zu verwenden. Ich möchte nur auf eine Sache hinweisen – es ist nicht nur auf Linux beschränkt – es ist plattformübergreifend – ein weiterer Grund, es zu verwenden.

    – sjaustirni

    20. November 2014 um 16:09 Uhr

  • Nuitka funktioniert auf Python 2.6, 2.7, 3.2, 3.3 und 3.4 und ist plattformübergreifend: (Linux, FreeBSD, NetBSD, MacOS X und Windows (32/64 Bit). Andere funktionieren möglicherweise auch. Architekturen: x86, x86_64 (amd64) und arm. Andere Architekturen funktionieren möglicherweise auch sofort.)

    – Jonathan Hartley

    15. März 2015 um 1:33 Uhr


  • Es wird für die neueste Version 3.6 nicht unterstützt und ist ein Alptraum für die Einrichtung unter Windows

    – Tetora

    30. Oktober 2017 um 7:04 Uhr

  • Wird dadurch eine eigenständige ausführbare Datei erstellt?

    – Stimmen

    29. Januar 2019 um 10:44 Uhr

  • Hat für mich unter Windows ziemlich sofort funktioniert und ich habe eine ziemlich gute Leistungsverbesserung erzielt. Das Erstellen einer eigenständigen ausführbaren Datei ist jedoch fehlgeschlagen 🙁

    – jkreis0

    4. August 2020 um 17:14 Uhr

Benutzer-Avatar
Wut.töten

Ja, es ist möglich, Python-Skripte in eigenständige ausführbare Dateien zu kompilieren.

PyInstaller kann verwendet werden, um Python-Programme in eigenständige ausführbare Dateien zu konvertieren, unter Windows, Linux, Mac OS X, FreeBSD, Solarisund AIX. Es ist einer der empfohlenen Konverter.

py2exe wandelt Python-Skripte in nur auf der Windows-Plattform ausführbare um.

Cython ist ein statischer Compiler sowohl für die Programmiersprache Python als auch für die erweiterte Programmiersprache Cython.

Benutzer-Avatar
Diego

Ich möchte einige nützliche Informationen zum Erstellen eigenständiger Dateien unter Windows mit Python 2.7 zusammenstellen.

Ich habe benutzt py2exe und es funktioniert, aber ich hatte einige Probleme.

  • Es hat einige Probleme beim Erstellen einzelner Dateien in Windows 64 Bit gezeigt: Die Verwendung von bundle_files = 1 mit py2exe funktioniert nicht;

  • Es ist notwendig, eine setup.py-Datei zu erstellen, damit es funktioniert. http://www.py2exe.org/index.cgi/Tutorial#Step2;

  • Ich hatte Probleme mit Abhängigkeiten, die Sie lösen müssen, indem Sie Pakete in die Setup-Datei importieren.

  • Ich war nicht in der Lage, es zusammen mit zu arbeiten PyQt.

Dieser letzte Grund veranlasste mich, es zu versuchen PyInstaller http://www.pyinstaller.org/.

Meiner Meinung nach ist es viel besser, weil:

  • Es ist einfacher zu bedienen.

Ich schlage vor, eine .bat-Datei mit beispielsweise den folgenden Zeilen zu erstellen (pyinstaller.exe muss sich im Windows-Pfad befinden):

pyinstaller.exe --onefile MyCode.py

Also denke ich, dass PyInstaller zumindest für Python 2.7 eine bessere und einfachere Option ist.

  • Das --onefile Flag hilft Ihnen nicht dabei, es unter Windows portabel zu machen, da die ausführbare Datei immer noch mit der verknüpfen möchte api-ms-win-crt-runtime-l1-1-0.dll Bibliothek (oder/und andere), die über installiert werden muss vcredist Paket. Eine Abhängigkeit ist also noch vorhanden und muss vor dem Lauf installiert werden.

    – Andry

    13. Juli 2017 um 11:13 Uhr


Benutzer-Avatar
Paolo

Und eine dritte Option ist cx_Freezedie plattformübergreifend ist.

  • Das --onefile Flag hilft Ihnen nicht dabei, es unter Windows portabel zu machen, da die ausführbare Datei immer noch mit der verknüpfen möchte api-ms-win-crt-runtime-l1-1-0.dll Bibliothek (oder/und andere), die über installiert werden muss vcredist Paket. Eine Abhängigkeit ist also noch vorhanden und muss vor dem Lauf installiert werden.

    – Andry

    13. Juli 2017 um 11:13 Uhr


Benutzer-Avatar
Peter Mortensen

pyinstaller yourfile.py -F --onefile

Dadurch wird unter Windows eine eigenständige EXE-Datei erstellt.

Wichtiger Hinweis 1: Die EXE-Datei wird in einem Ordner namens „dist“ generiert.

Wichtiger Hinweis 2: Vergessen Sie nicht –onefile Flag

Sie können PyInstaller mit installieren pip install PyInstaller

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

HINWEIS: In seltenen Fällen gibt es versteckte Abhängigkeiten. Wenn Sie also die EXE-Datei ausführen und den Fehler „fehlende Bibliothek“ erhalten (win32timezone im Beispiel unten), verwenden Sie so etwas:

pyinstaller --hiddenimport win32timezone -F "Backup Program.py"

1144580cookie-checkWie kann ich ein Python-Skript eigenständig ausführbar machen, um es ohne JEDE Abhängigkeit auszuführen? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy