Seite 1 von 1
Interpreter gemeinsam mit Skript verteilen
Verfasst: Dienstag 28. Oktober 2008, 18:58
von FrankW
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
Re: Interpreter gemeinsam mit Skript verteilen
Verfasst: Dienstag 28. Oktober 2008, 21:04
von Sr4l
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
Re: Interpreter gemeinsam mit Skript verteilen
Verfasst: Dienstag 28. Oktober 2008, 23:50
von Leonidas
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.
Verfasst: Mittwoch 29. Oktober 2008, 09:10
von FrankW
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...
Verfasst: Mittwoch 29. Oktober 2008, 09:41
von Leonidas
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.
Verfasst: Mittwoch 29. Oktober 2008, 13:11
von fhoech
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.
Verfasst: Mittwoch 29. Oktober 2008, 14:21
von numerix
@FrankW: Vielleicht wäre PortablePython auch eine Lösung für dich:
http://www.portablepython.com/
Verfasst: Donnerstag 30. Oktober 2008, 14:42
von FrankW
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...
