Seite 1 von 1

Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 14:25
von Kebap
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?

Re: Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 14:39
von BlackJack
@Kebap: Das klingt als würdest Du so etwas wie Pyinstaller nachbauen wollen.

Re: Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 14:50
von Kebap
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...?

Re: Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 15:10
von 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.

Re: Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 15:16
von Kebap
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).

Re: Python Script anderen portabel bereitstellen

Verfasst: Montag 17. Juli 2017, 15:22
von 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.