[Python-de] Re: __init__.py
Christopher Arndt
chris.arndt at web.de
Don Sep 8 22:18:36 CEST 2005
Sebastian "Marduk" Pölsterl schrieb:
> Die __init__.py sieht wie folgt aus:
>
> __all__ = ['Videodbmodel','Mainwindow']
>
> from videodbmodel import Videodbmodel
> from mainwindow import Mainwindow
Sieht gut aus.
> Ich hab jetzt schon die verschiedensten Arten von import ausprobiert und
> auch in __all__ hab ich schon einiges Versucht. __all__ auskommentieren
> hilft auch nicht.
>
> Wenn ich jetzt eine Datei erstelle und mit 'import videodb' das package
> importiere kommt zwar nunächst kein Fehler, aber wenn ich dann
> videodb.Videodbmodel aufrufe kommt:
> AttributeError: 'module' object has no attribute 'Videodbmodel'
>
> Importiere ich mit 'from videodb import Videodbmodel, Mainwindow' kommt:
> ImportError: cannot import name Videodbmodel
Du kannst __init__.py auch leer lassen und dann diese Form des Imports verwenden:
import videodb.videodbmodel
model = videodb.videodbmodel.Videodbmodel()
> Ich weiß jetzt einfach nicht mehr weiter. Wäre super nett wenn mir einer
> entweder einen Link zu einer guten Doku für __init__.py schickt oder mir
> erklärt wie ich das in den Griff bekomme.
Welchen Verzeichnisnamen hat den dein Paket? Es sollte so aussehen:
site-packages/
videodb/
__init__.py
videodbmodel.py
mainwindow
Achte darauf, das kein anderes Verzeichnis im Python-Pfad (sys.path) ein
Verzeichnis videodb mit einer __init__.py Datei enthät und dass auch sonst
keine videodb.py Modul irgendwo rumfliegt.
Mit
import videodb
videodb.__file__
kannst du sehen, woher videodb importiert wird.
Hdh, Chris