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:

Code: Alles auswählen

meinmodul.py
config.py
`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
:oops: Peinlich. Ist wohl irgendwie von der Versionsverwaltung bzw. Kollaboration verschluckt worden. Danke!