Anwendung weitergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
oldfellow
User
Beiträge: 5
Registriert: Montag 29. Oktober 2007, 22:20

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
BlackJack

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.
oldfellow
User
Beiträge: 5
Registriert: Montag 29. Oktober 2007, 22:20

Ich möchte die Anwendung ohne Installation weitergeben, wie es auch mit dem PyInstaller unter Windows funktioniert. Sodass die Anwendung nur gestartet werden muss.

Gibt es da keine möglichkeit?
BlackJack

Gibt es, das ist aber unter Linux äusserst unüblich.
lunar

oldfellow hat geschrieben:Ich möchte die Anwendung ohne Installation weitergeben, wie es auch mit dem PyInstaller unter Windows funktioniert.
Pyinstaller kann auch Linux-Binaries erzeugen.

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.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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).
lunar

snafu 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).
Bei der Vielzahl der existierenden Paketmanager ist das allerdings eine undankbare Aufgabe ;)
Benutzeravatar
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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.
Hallo lunar!
oldfellow hat geschrieben:die Anwendung ist fix für einen Kernel vorgesehen.
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.

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.
lunar

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.
Er will doch gar keinen Installer:
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.
So wie ich den OP verstehen, möchte er ein Single-Klick-Binary erzeugen, welches ohne jegliche Art von Installation ausgeführt werden kann.
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

lunar hat geschrieben:
snafu 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).
Bei der Vielzahl der existierenden Paketmanager ist das allerdings eine undankbare Aufgabe ;)
Er drückte sich ja so aus:
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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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...

Code: Alles auswählen

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named qt
"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...
oldfellow
User
Beiträge: 5
Registriert: Montag 29. Oktober 2007, 22:20

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!
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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.
lunar

oldfellow hat geschrieben:mir geht es hauptsächlich darum das eben KEINE Packete installiert werden, auch wenn das sicherlich kein Problem darstellt.
Darf man fragen, warum? Nur so aus Interesse ...
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Wenn es nen Programm für SLES 10 sein soll, dann bau doch ganz einfach nen rpm-Paket und schreib dort die Abhängigkeiten rein...die werden automiatsch installiert.
Antworten