Python Code vorcompilieren?

Martin von Loewis martin at mira.isdn.cs.tu-berlin.de
Mon Mar 9 21:21:36 EST 1998


Status: RO

> Jau, man muss evtl. nur mit externen Modulen aufpassen, die man
> verwenden moechte. Ich hatte da mal Probleme mit dem oracledb
> Modul. Ging zwar alles prima nach freeze, aber nur auf der Ausgangs-
> maschine. Auf einer anderen fehlte zur Laufzeit ploetzlich etwas.
> Ich habe nie genau herausgefunden, was, aber moeglich waere es, dass 
> man die extensions nicht als shared libraries erzeugen, sondern
> statisch in den Interpreter compilieren muss. Kann das jemand 
> bestaetigen?

Ja, ich. Ich falle regelmäßig wieder darauf herein, daß ich das
nsremote-Modul nicht mit hineinfreeze (schöner Deutsch). Das ist
i.d.R. nicht Python's Fehler: Man kann eine shared library nicht
statisch in ein Programm hineinlinken, zumindest unter den meisten
Betriebssystemen. Hier eine Kurzanleitung:

Zum freezen immer eine Pythoninstallation benutzen, bei der nichts
dynamisch übersetzt ist.
Wenn man eigene Binärmodule hat, immer eine statische und eine
dynamische Kopie vorrätig halten; die statische Kopie kann man
am besten in die libModules.a mit aufnehmen.
Beim freezen auf Fehlermeldungen achten: Wenn freeze ein Modul
nicht findet, funktioniert meist das fertige Programm auch nicht.

Und noch ein Bonbon: Freezen von Tkinter-Programmen. Wenn man
Tkinter-Programme normal freezt, benötigen sie TCL_LIBRARY und
TK_LIBRARY - sehr unhandlich. Glücklicherweise gibt's Tix, und das
unterstützt SAM (Standalone Modules). Man übersetzt Tix mit tclsam und
tksam, und linkt dann noch ein paar Sambibliotheken dazu. Das erfordert
allerlei Handarbeit, und die Tixsam unterstützt auch nicht das neueste
Tk, aber am Ende hat man ein wirklich alleinstehendes Programm.

Ciao,
Martin

______________________________________________________________
   python-de          the German Python mailing list
send messages to:   <mailto:python-de at solar.skyport.net>
list manager: <mailto:owner-python-de at solar.skyport.net>
______________________________________________________________




More information about the Python-de mailing list