Ich habe folgendes Problem:
Ich habe den CPython-Interptreter 2.5 auf ein Embedded-System portiert und greife mit diesem auf ein Flashfilesystem zu.
Nun bin ich dabei ausgewählte standard module in einen Lib Ordner auf dem Flash-Filesystem abzulegen.
Um diese Module nun importieren zu können, habe ich nach der Initalisierung des Interpreters sys.path die entsprechenden Include-ordner zugwiesen:
Code: Alles auswählen
// our working direcory is Disk1
PyRun_SimpleString("import posix");
PyRun_SimpleString("posix.chdir('/Disk1')");
// for import we define our sys-path
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path = ['','/Disk1/Lib']");
wenn ich nun versuche ein Modul aus dem Lib ordner zu importieren
schlägt dies fehl, da nur im CurrentWorkDir gesucht wird.
Ein Blick in das Dictionary sys.path_importer_cache zeigt mir folgendes:
Code: Alles auswählen
>>> sys.path_importer_cache
{'': None, '/Disk1/Lib': <imp.NullImporter object at 0x010FFEA0>}
>>>
Weiß zufällig einer von euch was bei der Initialisierung der Python-Shell passiert,
dass diesem Cache-Key ein solcher Nullimporter Objekt zugewiesen wird?
Edit: Nach weiteren Tests hab ich herausgefunden das es nicht an der Initialisierung der Python Shell liegt sondern an den eigentlichen import aufrufen. Wenn ich einen weiteren path in der shell hinzufüge wird diese nach dem ersten importversuch genauso mit dem Nullimporter in den importer_cache eingetragen.