Interpreter gemeinsam mit Skript verteilen

Probleme bei der Installation?
Antworten
FrankW
User
Beiträge: 4
Registriert: Donnerstag 6. September 2007, 07:45
Wohnort: Cottbus
Kontaktdaten:

Dienstag 28. Oktober 2008, 18:58

Hallo Python-Fans,
ich habe für unsere Firma ein Skript geschrieben, welches mit Hilfe des win32com Moduls Daten aus einem Lotus Notes Client in eine Excel-Tabelle überführt.

Nun möchte ich dieses Programm möglichst einfach den Anwendern zur Verfügung stellen. Ich stelle mir das so vor, dass der Python-Interpreter als Unterverzeichnis zum Skript mit verteilt wird und mittels bat-Datei das Skript gestartet wird (uvz/python.exe skript.py).

Leider hat das im ersten Test so nicht geklappt - er moniert, dass die Konfiguration nicht korrekt ist. Ich vermute, dass Python selbst oder die win32com-Komponenten irgendwas relevantes in die Registry schreiben, was auf dem Testrechner bei blossem Kopieren nicht vorhanden ist.

Vielleicht hat jemand eine Idee? Py2Exe etc. möchte ich aber nicht einsetzen.

Danke + Gruß
Frank
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dienstag 28. Oktober 2008, 21:04

FrankW hat geschrieben:Py2Exe etc. möchte ich aber nicht einsetzen.

Danke + Gruß
Frank
Genau dafür ist es aber gedacht ;-).
Hast du dir Py2Exe oder PyInstaller mal genau angeschaut?


Also ich habe mein kompletten Python Ordner einfach auf meinem USB Stick kopiert und von dort aus läuft es auch auf Rechnern auf denen kein Python ist. Zusätzlich habe ich noch die msvcr71.dll und die python25.dll in den Ordner gepackt, das war es glaub ich schon. Die Win32 Module und auch GUI Toolkits habe ich noch nie getestet.

Ich habe es gerade mal unter Wine probiert alle reinen Python Module scheinen zugehen, win32com kann ich aufgrund eines DLLs Fehlers nicht laden, könnte aber auch an Wine liegen. Da es mir an einem Windows Rechner mangelt auf dem kein Python ist kann ich dich nur bitte mal genau deine Fehlermeldung zu posten.

mfG
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 28. Oktober 2008, 23:50

FrankW hat geschrieben:Leider hat das im ersten Test so nicht geklappt - er moniert, dass die Konfiguration nicht korrekt ist. Ich vermute, dass Python selbst oder die win32com-Komponenten irgendwas relevantes in die Registry schreiben, was auf dem Testrechner bei blossem Kopieren nicht vorhanden ist.
Python auf keinen Fall, denn Pylite geht ohne jegliches schreiben problemlos. Das wird wohl irgendwo an win32com hängen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
FrankW
User
Beiträge: 4
Registriert: Donnerstag 6. September 2007, 07:45
Wohnort: Cottbus
Kontaktdaten:

Mittwoch 29. Oktober 2008, 09:10

Danke für die Antworten. Leider komme ich gerade nicht an den Kollegen 'ran, bei dem ich es probiert habe. Die Meldung lautete in etwa "ungültige Konfiguration"...

Ich dachte immer, dass Python-Module sich schön im Python-Verzeichnis breitmachen und man dieses dann nur 1:1 kopieren braucht. Letztendlich hat Linux ja auch keine Registry - ok, auch kein win32com.

Werde weiter testen...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 29. Oktober 2008, 09:41

FrankW hat geschrieben:Ich dachte immer, dass Python-Module sich schön im Python-Verzeichnis breitmachen und man dieses dann nur 1:1 kopieren braucht.
Richtig. Aber es gibt Dinge in Windows, die nur mittels Registry möglich sind, etwa registrierung von COM-Servern etc.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
fhoech
User
Beiträge: 143
Registriert: Montag 9. April 2007, 18:26

Mittwoch 29. Oktober 2008, 13:11

Handelt es sich um Python 2.6? Das bringt eine neue Abhängigkeit zu msvcr90.dll mit, wobei diese aber nicht "lose" sondern als Assembly mitgeliefert werden muss. Wie das geht habe ich vor kurzem in meiner Antwort im Thread "exe erstellen" beschrieben (zweiter Absatz), alternativ installiert man auf dem Zielrechner das Microsoft Visual C++ 2008 Redistributable Package (x86).
Übrigens bestehen diese Abhängigkeiten (zu vorherigen Versionen von msvcr*.dll) auch mit früheren Python Versionen, nur haben die meisten User (auch die, die kein Python nutzen), die entsprechenden Assemblys meist bereits installiert (z.B. die Runtimes zu MSVC6 und 7 werden bei vielen anderen Programmen mitinstalliert), weshalb sich dann kein Problem zeigt. Installierte Assemblys liegen unter Windows übrigens immer in %windir%\WinSxS.

Ansonsten würde ich dir auch raten, einen exe-Maker einzusetzen (z.B. bbfreeze, py2exe geht auch muss aber z.Zt. für Python 2.6 von Source installiert werden, nach etwas Handarbeit funktioniert auch pyinstaller 1.3 mit Python 2.6), denn falls du auf dem Zielsystem die MSVC 2008 Runtimes nicht installieren darfst/willst, musst du sonst das Assembly in alle Unterordner kopieren, in denen *.pyd-Dateien liegen sowie auch in den Ordner in dem sich python.exe und python26.dll befinden, damit es gefunden wird.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Mittwoch 29. Oktober 2008, 14:21

@FrankW: Vielleicht wäre PortablePython auch eine Lösung für dich: http://www.portablepython.com/
FrankW
User
Beiträge: 4
Registriert: Donnerstag 6. September 2007, 07:45
Wohnort: Cottbus
Kontaktdaten:

Donnerstag 30. Oktober 2008, 14:42

Danke an alle für die Hinweise. Habe sie mir auch angeschaut. Habe mich nun aber doch entschlossen, die Lösung direkt in Lotusscript umzusetzen, da es dann überhaupt keine Bereitstellungsprobleme gibt.

Zur Ehrenrettung für Python kann ich sagen, dass es ganz hervorragend für das Prototyping geeignet war... :wink:
Antworten