Hallo,
ich möchte meine Python Anwendung unter Linux gern weitergeben, die Anwendung ist fix für einen Kernel vorgesehen.
Als Gui nutze ich PyQt4.
Können die Notwendigen Bibliotheken einfach kopiert werden, oder wie ist da das vorgehen?
Unter Windows nutze ich den PyInstaller, jedoch möchte ich die Anwendung auch auf einem Linuxsystem weitergeben.
Vielen Dank
Anwendung weitergeben
Unter Linux würde ich einfach das Programm selber weitergeben und in einer Readme-Datei die benötigten Abhängigkeiten angeben. So etwas wie PyQt kann man sich unter Linux ja über die Paketverwaltung der verwendeten Distribution problemlos installieren.
Wenn Du eine spezielle Distribution besonders unterstützen willst, kannst Du Dich mit deren Paketsystem auseinander setzen und ein Paket erstellen. Dann werden die Abhängigkeiten, die Du angibst, im Normalfall vom Paketsystem automatisch mit installiert.
Wenn Du eine spezielle Distribution besonders unterstützen willst, kannst Du Dich mit deren Paketsystem auseinander setzen und ein Paket erstellen. Dann werden die Abhängigkeiten, die Du angibst, im Normalfall vom Paketsystem automatisch mit installiert.
Pyinstaller kann auch Linux-Binaries erzeugen.oldfellow hat geschrieben:Ich möchte die Anwendung ohne Installation weitergeben, wie es auch mit dem PyInstaller unter Windows funktioniert.
Allerdings ist das unter Linux schlicht und einfach unsinnig, im Gegensatz zu Windows haben Linux-Distributionen nämlich meist vernünftiges Paketmanagement. Zudem sind solche Binaries unter Windows ziemlich einfach, weil es Windows nur für zwei Architekturen gibt, und Windows immer gleich Windows ist. Linux dagegen läuft auf weit mehr Architekturen, und noch dazu nutzen Linux-Distributionen allerhand unterschiedliche Compiler-Optionen, was zu netten Segfaults und ähnlichem führen kann, wenn man SOs einer Distri auf einer anderen nutzt.
Man könnte ja ein Script schreiben, das vor dem Start des eigentlich Programms prüft ob das Programm installiert ist und ggf. den Paketmanager zur Installation bemüht. Dann muss der User auch nur draufklicken (oder was auch immer er tun soll).
Bei der Vielzahl der existierenden Paketmanager ist das allerdings eine undankbare Aufgabesnafu hat geschrieben:Man könnte ja ein Script schreiben, das vor dem Start des eigentlich Programms prüft ob das Programm installiert ist und ggf. den Paketmanager zur Installation bemüht. Dann muss der User auch nur draufklicken (oder was auch immer er tun soll).
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Für die Installation: http://www.installjammer.com/
Und zum Packen der Daten, damit alles mit dabei ist was zum Ausführen benötigt wird: cx_freeze http://sourceforge.net/projects/cx-freeze/
Oder vielleicht auch mit bbfreeze: http://www.python-forum.de/topic-13898.html
mfg
Gerold
Für die Installation: http://www.installjammer.com/
Und zum Packen der Daten, damit alles mit dabei ist was zum Ausführen benötigt wird: cx_freeze http://sourceforge.net/projects/cx-freeze/
Oder vielleicht auch mit bbfreeze: http://www.python-forum.de/topic-13898.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Und was soll dieses Ding bringen? Das ist kaum mehr als eine bunte GUI für ein Installationsskript, das grundlegende Problem von inkompatiblen Binärversionen löst auch das nicht.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo lunar!lunar hat geschrieben:Und was soll dieses Ding bringen? Das ist kaum mehr als eine bunte GUI für ein Installationsskript, das grundlegende Problem von inkompatiblen Binärversionen löst auch das nicht.
Ich will nicht darüber diskutieren, ob das ideal ist oder nicht. Aber der OP kann veranlassen, dass zumindest "QT" auf den Computern über das Paketmanagement installiert wird. Und alle anderen Abhängigkeiten können von cx_freeze gepackt werden. Der Installjammer verteilt die benötigten Dateien und erstellt auch noch schnell einen Startmenüeintrag. Eventuell packt man die benötigten Dateien für verschiedene Umgebungen mehrfach ein. Dann kann das Installationsprogramm entscheiden, welche Dateien in welchem Fall installiert werden.oldfellow hat geschrieben:die Anwendung ist fix für einen Kernel vorgesehen.
Wir wissen ja nicht, welche Anwendung und für wen der OP sein Programm schreibt. Vielleicht kann er ja auch davon ausgehen, dass auf allen Computern die gleichen Bedingungen herrschen. Oder das außer QT nichts benötigt wird, was ein Neukompilieren der Anwendung notwendig machen würde.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Er will doch gar keinen Installer:gerold hat geschrieben:Aber der OP kann veranlassen, dass zumindest "QT" auf den Computern über das Paketmanagement installiert wird. Und alle anderen Abhängigkeiten können von cx_freeze gepackt werden. Der Installjammer verteilt die benötigten Dateien und erstellt auch noch schnell einen Startmenüeintrag. Eventuell packt man die benötigten Dateien für verschiedene Umgebungen mehrfach ein. Dann kann das Installationsprogramm entscheiden, welche Dateien in welchem Fall installiert werden.
So wie ich den OP verstehen, möchte er ein Single-Klick-Binary erzeugen, welches ohne jegliche Art von Installation ausgeführt werden kann.oldfellow hat geschrieben:ch möchte die Anwendung ohne Installation weitergeben, wie es auch mit dem PyInstaller unter Windows funktioniert. Sodass die Anwendung nur gestartet werden muss.
Er drückte sich ja so aus:lunar hat geschrieben:Bei der Vielzahl der existierenden Paketmanager ist das allerdings eine undankbare Aufgabesnafu hat geschrieben:Man könnte ja ein Script schreiben, das vor dem Start des eigentlich Programms prüft ob das Programm installiert ist und ggf. den Paketmanager zur Installation bemüht. Dann muss der User auch nur draufklicken (oder was auch immer er tun soll).
jedoch möchte ich die Anwendung auch auf einem Linuxsystem weitergeben.
Wenn also das verwendete Linux-System bekannt ist, sollte es kein großes Problem darstellen, den richtigen Paketmanager zu verwenden. Denkbar wären aber auch Default-Werte, die nacheinander durchprobiert werden und im Zweifelsfall kann immer noch mit dem Anwender interagiert werden.
Übrigens meinte ich natürlich kein seperates Script (ich hatte mich da vertan) sondern eine Funktion innerhalb des Binaries. Und zudem empfiehlt es sich, erst den Programmaufruf zu versuchen und bei Misserfolg auf die Funktion zurückzugreifen. Kommt davon, wenn ich Beiträge zwischen Tür und Angel schreibe. ;P
Ich sehe irgendwie nich so viele Probleme... Man liefert die Source aus und'ne Readme mit dem Zeug was benötigt wird. Jeder der Linux benutzt wird die Applikation mit'r Konsole öffnen und dann kommt sowas wie...
"OH, dann les ich mal die Readme!!! *readme les* ACHSO ICH BRAUCH PyQT! *synaptic aufmach* oder *apt-get install ~~~ eingeb* oder *pacman eingeb* oder *rpmschießmichtot eingeb* oder ... Keine Ahnung. Sogar Leute die Windows benutzen lesen'ne Readme wenn'n Programm nicht sofort funktioniert...
Code: Alles auswählen
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named qt
hui, vielen dank für die vielen Antworten,
mir geht es hauptsächlich darum das eben KEINE Packete installiert werden, auch wenn das sicherlich kein Problem darstellt.
Da die Anwendung eben nur auf einem SLES 10 genutzt werden darf / soll möchte ich alle notwendigen Module weitergeben.
Da ich den Pyinstaller für win nutze werde ich mal sehen ob das unter linux genauso gut funktioniert.
gibt es irgendetwas dringend bzgl. pyqt zubeachten?
vielen dank!
mir geht es hauptsächlich darum das eben KEINE Packete installiert werden, auch wenn das sicherlich kein Problem darstellt.
Da die Anwendung eben nur auf einem SLES 10 genutzt werden darf / soll möchte ich alle notwendigen Module weitergeben.
Da ich den Pyinstaller für win nutze werde ich mal sehen ob das unter linux genauso gut funktioniert.
gibt es irgendetwas dringend bzgl. pyqt zubeachten?
vielen dank!
Ist QT allgemein installiert? Ohne wird's schwierig, "mitgeben" wird nich reichen. Ansonsten kannst du einfach alles dazupacken, in's selbe Verzeichnis wie deine Applikation... Auf QT zu prüfen ist nicht schwer.
Darf man fragen, warum? Nur so aus Interesse ...oldfellow hat geschrieben:mir geht es hauptsächlich darum das eben KEINE Packete installiert werden, auch wenn das sicherlich kein Problem darstellt.