moin Bisher hab ich meine Programme für die Installation beim Kunden immer mit py2exe gepackt und war damit soweit auch zufrieden. Derzeit hab ich nur wieder mal das Problem, dass das compilieren zwar funktioniert aber die exe nen Fehler verursacht. Und bevor ich da den Fehler such, dachte ich mir ob man das ganze nicht besser lösen könnte. Meine Idee ist, eine Python-Umgebung automatisiert einzurichten und dann das eigentliche Programm zu installieren. Natürlich möchte ich die ganzen Python-Pakete nicht neuzusammenpacken, sondern die mit Ihren jeweiligen Setups sich installieren lassen. (Ich weiss dämlicher Satzbau, aber hoffentlich wird gleich klar, was ich will.) Ich stell mir das in etwa so vor: 1. gewünschte Python-Major-Version vorhanden? - Ja: gegebenenfalls auf Python-Minor-Version aktualisieren. - Nein: Installationsverzeichnis abfragen und installieren 2. überprüfen, ob von den einzelnen Paketen jeweils die aktuelle Version vorhanden ist und gegebenenfalls installieren / aktualisieren - das sollte möglichst automatisch ablaufen, also nicht das der Nutzer jedes Paket einzeln abnicken muss 3. Programm in eigenes Verzeichniss installieren (also nicht nach site-packages, meine Programme sind keine Pakete im eigentlichen Sinne) - als Option nur compilierte Python-Scripte (pyc, pyo, pyd) ins Setup packen Das hat dann auch gleich den Vorteil, dass auf den Rechnern eine eigenständige Python-Umgebung installiert ist und das sollte doch überall so sein *g* Ich hab mir InnoSetup installiert und wollte eigentlich loslegen. Aber dann kamen Fragen, ob InnoSetup dafür überhaupt geeignet ist. Insbesondere das überprüfen der Versionen der Pakete macht mir Sorgen. Weil dafür müssen ja jeweils kurze Skripte in der zuvor installierten Python-Umgebung ausgeführt werden. So meine Frage: Kann man mit InnoSetup eine vollwertige Python-Umgebung inklusive Paketen installieren, ohne für jedes Paket das Setup neuschreiben zu müssen? Oder wie löst ihr das? Meine Zielplatform ist im Moment Windows. Es wär aber trotzdem schön, wenn man mit der Methode auch Setups für andere Systeme erstellen könnte. Vielen Dank schonmal für eure Hilfe cu boesi PS: Nein ich hab mich mit InnoSetup noch nicht weiter beschäftigt, aber ich frag erstmal, ob meine Anforderung erfüllt werden. PPS: Und nein PyInstaller ist auch keine Lösung, weil ich will ja gerade weg von den exe-Krams... PPPS: Ein Problem ist mir noch eingefallen - was soll mit Python-Installationen passieren, die unabhängig von meinen Programmen installiert wurden und wo vielleicht mit Absicht ältere Paket-Versionen installiert sind. Also muss es einen Weg geben, "meine" Python-Installation zu erkennen. -- A Achkatz'l ofm Baam des hot a schins Laam braucht keen Pfenng Gald un freit sich of dr Walt _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Alexander 'boesi' Bösecke schrieb:
Bisher hab ich meine Programme für die Installation beim Kunden immer mit py2exe gepackt
Also arbeitest du nur unter Windows, ja? In dem Fall kannst du auch IMHO auch vollkommen ohne installation auskommen... Python und dein Programm zusammen packen, eine Batchdatei zum starten noch dazu und fertig... Denn Python läuft auch ohne installation sehr gut. Updates kannst du dann so machen, das du einmal ein kleines Paket anbietest (Nur deine Skriptdaten) und einmal als großes Paket (mit Python zusammen) Nur mal so als Anregung... -- Mfg. Jens Diemer ---- CMS in pure Python CGI: http://www.pylucid.org _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Oder vielleicht mit Movable Python: http://www.voidspace.org.uk/python/movpy/ Gruss, Marco _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Jens Diemer schrieb:
Denn Python läuft auch ohne installation sehr gut.
Hab einen Link zum Thema Mini-Python gefunden: http://www.python-forum.de/viewtopic.php?t=3666 -- Mfg. Jens Diemer ---- CMS in pure Python CGI: http://www.pylucid.org _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
moin Hmm schade ich hatte mir etwas mehr Resonanz erhofft. Nunja wie war das mit dem selbständig sein ... *g* Ich antworte mir jetzt selbst, ich hoffe das ist ok.
Python und dein Programm zusammen packen, eine Batchdatei zum starten noch dazu und fertig...
Das ist aber allerhöchstens sehr kurzfristig sinnvoll. Das Problem speziell für mich ist, dass ich für jedes meiner Programme (im Moment 4, werden mittelfristig wahrscheinlich mehr) eine eigene Python-Installation pflegen müßte, da ich doch relativ viele und unterschiedliche Pakete verwende. Und eine grosse Installation mit allen Paketen geht auch nicht, weil eines der Pakete nur für Python 2.3 verfügbar ist. Ich will aber schon Python 2.4 verwenden, soweit möglich. Und meine Installationen, mit denen ich arbeite, möchte ich dafür auch ungern verwenden, weil sich da inzwischen doch einiger "Müll" angesammelt hat. Ausserdem ist es zumindest theoretisch möglich, das Pakete doch installiert werden müssen, wegen Registry-Einträgen, weil bestimmte Bibliotheken unabhängig von Python vorhanden sein müssen oder was auch immer. Aus diesen Gründen hab ich ja auch py2exe genutzt. Das Problem ist halt nur, dass da immer wieder irgendwas nicht funktioniert. Daher meine Idee, einfach zusammen mit meinem Programm ein vollwertiges Python installieren.
Oder vielleicht mit Movable Python:
Movable Python scheint zwar ganz nett zu sein, geht aber irgendwie an meinem Bedarf vorbei - ich kann auf den Maschinen Programme installieren, ich will keinen USB-Stick nutzen, ich brauch kein portables Python, auf den Rechnern will ich jeweils nur eine Python-Installation, Python soll ja gerade installiert werden, Python brauch ich nicht testen - kenn ich schon *g*. Was aber der eigentliche Nachteil zu sein scheint - man kann sich keine eigene "Distribution" zusammenstellen? Beziehungsweise muss dafür den Author von MovPy kontaktieren? Und das dann bei jedem Update eines Paketes? Sorry aber da bau ich mir lieber mein eigenes "Distributions-System".
Hab einen Link zum Thema Mini-Python gefunden:
Hmm ich brauch neben Python noch wxPython, pygame, PIL, aggdraw, iptcinfo, pyvideo, ... Python selbst abzuspecken, ist zwar nett, aber bringt mir im Moment nicht sonderlich viel. Ich hab mir jetzt erstmal ein vb-Script gebastetlt, das die Packete installiert, mein Programm kopiert, Link auf'm Desktop anlegt und das ganze mit 7-Zip in ein selbstentpackendes Archiv gepackt. Das erfüllt zwar nur einen Teil meiner Anforderungen, aber reicht für den Moment aus. Mittelfristig plane ich, dass ganze 1. nach Python umzuschreiben, 2. die Überprüfung der Paket-Versionen einzubauen und 3. irgendein Frontend zu bauen, mit dem sich das schön konfigurieren läßt. cu boesi PS: Natürlich wird dieses "Paket-Management" dann auch seinen Weg in die Öffentlichkeit finden. Allerdings glaub ich nicht, das ich dieses Jahr noch Zeit dazu finde. -- So stellt sich der Atheist doch die Unsterblichkeit vor - Lokalverbot auf dem Friedhof. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Alexander 'boesi' Bösecke schrieb:
So meine Frage: Kann man mit InnoSetup eine vollwertige Python-Umgebung inklusive Paketen installieren, ohne für jedes Paket das Setup neuschreiben zu müssen? Oder wie löst ihr das?
Ich würde heutzutage immer MSI-Files erzeugen. MSI kann "nested installations", was bedeutet, dass ein MSI-File ein anderes aufrufen kann. Die nötige Versionstesterei, anzeigen von UI falls eine neue Installation gemacht wird und überspringen der Installation anderenfalls macht alles MSI. Die einzige Frage ist dann, wie man das MSI-File erzeugt. Ich mache das jetzt immer mit meiner eigenen Bibliothek (msilib.py), aber es gibt viele andere Tools (Visual Studio, WiX, ...). Der Einarbeitungsaufwand in MSI ist ziemlich hoch. Ciao, Martin _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hi Am 09.09.2006 09:34:33 schrieb Martin v. Löwis:
Alexander 'boesi' Bösecke schrieb:
So meine Frage: Kann man mit InnoSetup eine vollwertige Python-Umgebung inklusive Paketen installieren, ohne für jedes Paket das Setup neuschreiben zu müssen? Oder wie löst ihr das?
Ich würde heutzutage immer MSI-Files erzeugen. MSI kann "nested installations", was bedeutet, dass ein MSI-File ein anderes aufrufen kann. Die nötige Versionstesterei, anzeigen von UI falls eine neue Installation gemacht wird und überspringen der Installation anderenfalls macht alles MSI.
Danke. Ich hatte gar nicht aufm Plan, dass MSI derart viel kann. Nur Linux läßt sich damit nicht bedienen. Aber da gibt's ja auch genügend Paket-Manager...
Die einzige Frage ist dann, wie man das MSI-File erzeugt. Ich mache das jetzt immer mit meiner eigenen Bibliothek (msilib.py), aber es gibt viele andere Tools (Visual Studio, WiX, ...).
Aus welchem Grund hast du dir ein eigene Bibliothek geschrieben? Kannst du das veröffentlichen? Oder hast du das nur speziell für deinen eigenen Bedarf geschrieben?
Der Einarbeitungsaufwand in MSI ist ziemlich hoch.
Wenn man komplett sein eigenes Installationsscript schreibt, ist der Aufwand kaum geringer, wie ich feststellen durfte. Und da ist noch keine Möglichkeit dabei irgendwas auszuwählen. Die größte Schwierigkeit war letztenendes ein Paket, das distutils zum installieren verwendet. cu boesi -- Ein sicherer Rechner steht ohne Netz und Strom in einem Schweizer Kellersafe, die Schwiegermutter hält mit dem Nudelholz Wache vor der Kellertüre ... Und sicher sind die Daten trotzdem nicht ... _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Alexander 'boesi' Bösecke schrieb:
Die einzige Frage ist dann, wie man das MSI-File erzeugt. Ich mache das jetzt immer mit meiner eigenen Bibliothek (msilib.py), aber es gibt viele andere Tools (Visual Studio, WiX, ...).
Aus welchem Grund hast du dir ein eigene Bibliothek geschrieben? Kannst du das veröffentlichen? Oder hast du das nur speziell für deinen eigenen Bedarf geschrieben?
Es ist in http://svn.python.org/projects/python/trunk/Tools/msi/ (msilib.py). Ich habe es geschrieben, um die MSI-Files für Python zu erzeugen. Ich hatte zuerst den MSI-Generator von Visual Studio 2003 verwendet. Der taugt aber nichts; insbesondere kann er keine Win64-Pakete (da muss man im MSI irgendwelche Flags setzen, und das ist nicht unterstützt). Mit meinem eigenen Generator kann ich auch mein eigenes GUI erzeugen, anstatt das Standard-GUI zu nehmen, was VS.NET generiert. Ich hatte dann auch noch (kurz) WiX ausprobiert, aber gefunden, dass WiX MSI auch nicht viel einfacher macht. Der Vorteil eines Python-Skripts für die MSI-Generierung liegt vor allem darin, dass man richtige Algorithmen schreiben kann. Für das Python-MSI habe ich zum Beispiel: - suche alle .pyd-Dateien in PCbuild, vergleiche sie mit einer Liste, und melde, wenn es zusätzliche/fehlende Module gibt. - füge für jede .pyd-Datei die zugehörige .lib-Datei ein (anstatt alle .lib-Dateien zu integrieren - da wären auch debug-Dateien dabei) - suche rekursiv im Verzeichnis Lib alle .py-Dateien, überspringe aber .svn und plat-*. Wenn "test" im Verzeichnisnamen vorkommt, füge es in das "test"-Feature ein (was separat installiert werden kann). Der Python-Packager ist in msi.py; msilib.py ist die Bibliothek zum Erzeugen beliebiger MSI-Files. In Python 2.5 habe ich das Modul zu bdist_msi erweitert. Das geht wie bdist_wininst, erzeugt aber ein MSI-File. Es ist natürlich ausschließlich auf die Belange von distutils-Anwendungen fokussiert.
Der Einarbeitungsaufwand in MSI ist ziemlich hoch.
Wenn man komplett sein eigenes Installationsscript schreibt, ist der Aufwand kaum geringer, wie ich feststellen durfte. Und da ist noch keine Möglichkeit dabei irgendwas auszuwählen. Die größte Schwierigkeit war letztenendes ein Paket, das distutils zum installieren verwendet.
Der Aufwand ist für jede Paketierungssoftware hoch - allerdings ist für MSI der Aufwand *wirklich* hoch (eine vollständige Einarbeitung braucht mehrere Jahre - ich habe noch nicht alles verstanden). Ciao, Martin _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (4)
-
"Martin v. Löwis"
-
Alexander 'boesi' Bösecke
-
Jens Diemer
-
Marco Aschwanden