[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