Python Script anderen portabel bereitstellen

Probleme bei der Installation?
Antworten
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Hallo Leute!

Ich schreibe ja meist Code, den ich nur selbst benutze, aber nun ist es soweit: Jemand anderes möchte auch mal.

Wie kann ich meine Scripts möglichst einfach und komforabel bereitstellen? Zielsystem ist Windows.

Sprich: Der Kollege soll nicht erstmal Python herunterladen und installieren, nicht erstmal mein Script installieren müssen, und möglichst auch keine obskure .exe-Datei erhalten, die dann seinem Virenscanner osä. auffällt. Im besten Fall bleiben die .py Dateien im Textformat bestehen und auch Grundlage der Programmlogik, so dass sie auch nachträglich angepasst werden könnte.

Momentan experimentiere ich damit, einfach das komplette "python"-Unterverzeichnis neben meine Script-Datei zu legen, und dann mit einer kurzen Batch-Datei die Ausführung meines Python-Scripts in dieser Umgebung zu starten.

Gibt es da elegantere Lösungen?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
BlackJack

@Kebap: Das klingt als würdest Du so etwas wie Pyinstaller nachbauen wollen.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Wenn ich das auf den ersten Blick richtig gesehen habe, purzelt bei Pyinstaller eine .exe Datei heraus, die quasi mein Script und die Pythonumgebung verheiratet hat. Das ist ja ganz anders als meine Zielvorstellung...?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
BlackJack

@Kebap: Da kann auch eine EXE herauspurzeln, muss aber nicht. Du kannst auch das ”Zwischenergebnis” abgreifen: Ein Verzeichnis wo Python, Dein Code, und alles andere Notwendige drin ist.
https://pyinstaller.readthedocs.io/en/stable/operating-mode.html hat geschrieben:PyInstaller reads a Python script written by you. It analyzes your code to discover every other module and library your script needs in order to execute. Then it collects copies of all those files – including the active Python interpreter! – and puts them with your script in a single folder, or optionally in a single executable file.

[…]

You distribute the bundle as a folder or file to other people, and they can execute your program.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Ja, ich lese auch gerade unter https://pyinstaller.readthedocs.io/en/s ... one-folder

Es ist gut, dass er nur die benötigten Dateien und Module heraussucht, nicht das komplette "python" Unterverzeichnis bereitstellt.

Dennoch scheint er dann aus meinem Script eine .exe Datei zu erstellen, und (nicht sicher?) nicht die .py Datei zu benutzen.

Das heißt, obwohl ich das nicht nachbauen will (oder könnte), muss ich doch vor Ende vom Zug abspringen und neu abbiegen.
When you apply PyInstaller to myscript.py the default result is a single folder named myscript. This folder contains all your script’s dependencies, and an executable file also named myscript (myscript.exe in Windows).
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
BlackJack

@Kebap: Nicht wirklich. Im nächsten Abschnitt steht ja was diese EXE macht: Das ist das was Du als BAT schreiben wolltest. Wenn man einfach das Python-Skript startet passiert ja entweder gar nichts — wenn der Benutzer kein Python installiert hat weiss Windows nix mit einer *.py anzufangen, oder es wird das systemweit installierte Python verwendet — das hat eventuell nicht alle Abhängigkeiten installiert. Die EXE setzt die Umgebungsvariablen so dass das Python in diesem Verzeichnis verwendet wird und startet dann Dein Python-Programm mit dem mitgelieferten Python.
Antworten