Module mitliefern

Probleme bei der Installation?
Antworten
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Mal wieder eine Frage meinerseits, die Frage ist in ähnlicher Form schon mehrmals gestellt wurden. Aber ich finde keine Grundlegende Frage dazu.

Bisher habe ich immer wenn ich jemanden python scripte gegeben habe, die einzelnen Scriptabhängigen Module mit gegeben, weil es so bisher immer schnell und unproblematisch funktionierte.

Mir ist allerdings klar, das dies nur in einem kleinen Rahmen funktioniert.
Abhängigkeiten sollten besser gleich vom Nutzer installiert oder in einem setup mitgeliefert werden.

Wie ich gelesen habe ging es hier immer um easy_install oder eine setup.py,
meine Frage hierzu ist gibt es für solche Sachen mal ein Parade Beispiel ?

und ich würde die pakete ungern vom Internet abhängig machen also nicht erst bei der installation downloaden, sondern gleich mitliefern.

Zusamenfassung: Ich möchte meine Programmabhängig selbst erfüllen und nur davon ausgehen das der Nutzer Python hat.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

pip und easy_install arbeiten ueber den PIP, also Internet, faellt also weg. Die einzige Moeglichkeit waere also ein Archiv - Tarball, Zip, ...

Wenn du das dann systemweit installieren willst, solltest du eben doch eine `setup.py` schreiben, die hat mit den o.g. Tools ja recht wenig zu tun.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

cofi hat geschrieben:Wenn du das dann systemweit installieren willst, solltest du eben doch eine `setup.py` schreiben, die hat mit den o.g. Tools ja recht wenig zu tun.
Ähm, ja
Xynon1 hat geschrieben:...easy_install oder eine setup.py...
cofi hat geschrieben:Die einzige Moeglichkeit waere also ein Archiv - Tarball, Zip, ...
Das habe ich mir schon gedacht, trotzdem bleibt die Frage, ob es dafür ein Parade Beispiel gibt. bzw so hatte ich es auch vor.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Xynon1 hat geschrieben:Ähm, ja
Xynon1 hat geschrieben:...easy_install oder eine setup.py...
Oh entschuldige das hab ich falsch ueberflogen.
Xynon1 hat geschrieben:Das habe ich mir schon gedacht, trotzdem bleibt die Frage, ob es dafür ein Parade Beispiel gibt. bzw so hatte ich es auch vor.
Nunja fuer `setup.py` gibt es jede Menge Beispiele in PIP und eine Doku gibt es auch noch: http://docs.python.org/install/
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

:?: Gut da steht wie ich sie benutze und wie baue ich sie auf ?
Oder ist das immer die gleiche Datei ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Oh entschuldige falscher Link: http://docs.python.org/distutils/index.html

Nein das ist nicht per se die gleiche Datei, aber sie sind sich haeufig aehnlich.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

ah distutils :idea: - wer soll denn darauf kommen.
Danke, werde mich mal reinlesen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Mal noch ein paar Frage hierzu, wie spielt sich das mit setup.py grundsätzlich ab.

Klar ist man muss es über Kommandozeile aufrufen, mit entsprechenden anweisung, ähnlich wie bei einer source per makefile.
Man kann angeben welchen Abhängigkeiten die Libs, ob nun die eigenen oder von mitlieferten Fremdpaketen, haben.

Aber was wird im Hintergrund benötigt, also werden die Datein einfach nur kopiert oder was passiert genau ?
Ein tarball muss wenn ich das richtig gelesen habe immer vorher entpackt werden, aber mit rpms kommt er scheinbar Problemlos klar. Wie sieht es mit .deb aus, da konnte ich nichts finden ?
Und welche abhängigkeiten werden eigentlich zu cross-/compilieren benötigt werden dort nicht die normalen compiler von c erwartet ???
Und anhand welcher Werte wird eigentlich erkannt ob bestimmte Abhängigkeiten schon erfüllt sind, oder werden diese ignoriert ?

Also in Kurzform - bin ich zu bekloppt die Abhängigkeiten der disuntils zufinden oder gibt es gar keine ?

Und nochwas - ist disutil in der Standardlib von python <-- dmit meine ich nicht im windows msi paket, da ist es offensichtlich drin.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Gleich noch eine Frage:

Kann man gefahrlos mehrere setup.py mit einander verknüpfen ?
Also entweder mehrere setup(..) funktionen in der setup.py oder per subprocess einfach die andere aufrufen mit den Zielort der ersten.

So das wenn man zB die PIL mitliefert diese gleich mit an das eigene setup hängt.
Damit der Nutzer nicht ein setup nach dem anderen installieren muss.

Und nein ich möchte die anderen Libs nicht in der selben setup funktion mit defininieren, wegen author und andern meta-daten die man in einer setup funktion angibt.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Keiner auch nur eine Idee dazu ?
Wenn ihr konkretere Information braucht müsst ihr es sagen.

Die Frage hier ist auch noch offen:
http://python-forum.de/viewtopic.php?f= ... 7&start=15
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

distutils ist kein Drittanbieterpaket (dürfte bei einer Installation vom Python-Quellpaket dabei sein), trotzdem lagern es viele Distributionen in ein separates Paket aus. Du kannst daher nicht davon ausgehen, das es vorhanden ist.

Wenn Du viele Drittpakete mit Deiner Anwendung ausliefern willst/musst, solltest Du vllt. mal einen Blick auf 'virutalenv' werfen. Damit hast Du quasi freie Hand, was die Paketabhängigkeiten angeht und kommst nicht in Versionskonflikte mit systemweit installierten Modulen. Bei einer grösseren systemweiten Installtion besteht immer die Gefahr, diese unbrauchbar zu machen (Installation am Paketmanager der Distribution vorbei, Skripte funktionieren plötzlich nicht mehr aufgrund geänderter Modul-API usw.)

Mit virtualenv kannst Du Dir eigene Bootstrap-Skripte schreiben und selbst festlegen, wo die zu installierenden Pakete herkommen (z.B. via easy_install oder als tar.gz mitgeliefert).

Vllt. hilft Dir das ja weiter.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

jerch hat geschrieben:Bei einer grösseren systemweiten Installtion besteht immer die Gefahr, diese unbrauchbar zu machen (Installation am Paketmanager der Distribution vorbei, Skripte funktionieren plötzlich nicht mehr aufgrund geänderter Modul-API usw.)
Genau deswegen frage ich ja :D

virtualenv - auf jedenfall Danke für den Hinweis, gibt es da gleich noch eine gute Documentation oder Tutorial die du mir dringend raten würdest ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten