Seite 1 von 1
RuntimeWarning: Parent module ... not found
Verfasst: Donnerstag 27. August 2009, 20:50
von Dauerbaustelle
Hallo,
ich habe hier ein Stück Code, welches mit dem imp-Modul ein externes Modul einbindet (die __init__.py-Datei davon).
Die Ordnerstruktur sieht so aus:
Code: Alles auswählen
meinmodul.py
ordner
__init__.py (wird aus meinmodul.py importiert)
Ich bekomme jetzt dauernd einen nervenden
Code: Alles auswählen
ordner/__init__.py:1: RuntimeWarning: Parent module 'ordner/__init__' not found while handling absolute import
(ein import-Statement in __init__.py)
Ich habe es schon versucht, "ordner" dem sys.path und den Ordner, der "meinmodul.py" und "ordner" enthält dem sys.path hinzuzufügen (auch beides auf einmal), das hat aber nichts geholfen.
Was mache ich falsch?
Verfasst: Donnerstag 27. August 2009, 23:26
von birkenfeld
Mit dem imp-Modul? Wie genau sieht das aus?
Verfasst: Freitag 28. August 2009, 00:13
von Dauerbaustelle
Code: Alles auswählen
try:
fobj, path, description = imp.find_module('__init__',
[ABSOLUTER_PFAD_ZU_ordner])
except ImportError:
return
else:
return imp.load_module(path, fobj, path, description)
fobj.close()
So :-)
Verfasst: Freitag 28. August 2009, 09:34
von b.esser-wisser
Willst du wirklich nur das modul __init__ importieren?
So ein Modul gehört doch zu einem Package, evtl. willst du das package finden/importieren?
(d.h. den Ordner, in dem die __init__.py liegt suchen und importieren, was auch funktioniert, mit 2.6 auf Ubuntu getestet)
scnr, Jörg
Verfasst: Freitag 28. August 2009, 11:43
von Dauerbaustelle
Hm, nachdem ich nicht mehr explizit die __init__-Datei importiere, sondern das Package, funktionierts ohne Warning. Trotzdem löst das das Originalproblem nicht, es umgeht es bloß - aber danke für den Tipp!
Verfasst: Freitag 28. August 2009, 12:21
von Trundle
Welches Originalproblem? Du importierst einfach falsch. Zum Einen importiert man nicht die __init__ direkt. Zum Anderen ist das erste Argument von `imp.load_module()` der Modul-Name. Deine geladene __init__ ist also das Modul "py" vom Package "ordner/__init__" und bei irgendeinem Import sucht er jetzt eben das Elternpaket ("ordner/__init__"), das es ja aber niemals geben kann.
Verfasst: Freitag 28. August 2009, 13:08
von Dauerbaustelle
Stimmt. Danke!
Verfasst: Dienstag 22. Dezember 2009, 14:05
von Dauerbaustelle
Sorry dass ich den Fred noch mal aufmache, aber ich stehe wieder vor dem gleichen Symptom.
Konkret geht es um
diese Funktion. Die Ordnerstruktur sieht jetzt wie folgt aus:
`base_path` o.g. Funktion ist der absolute Pfad zu dem Ordner, der `meinmodul.py` ("/pfad/zu/meinem/modul/") enthält.
Die Warnung ist diese:
Code: Alles auswählen
RuntimeWarning: Parent module '/pfad/zu/meinem/modul/config' not found while handling absolute import [irgendein import-statement]
Verfasst: Dienstag 22. Dezember 2009, 15:17
von Trundle
`imp.load_module()` nimmt immer noch den Modulnamen als erstes Argument entgegen und nicht den Pfad.
Verfasst: Dienstag 22. Dezember 2009, 18:59
von Dauerbaustelle

Peinlich. Ist wohl irgendwie von der Versionsverwaltung bzw. Kollaboration verschluckt worden. Danke!