[Python-de] import Dilemma

Stefan Behnel behnel_ml at gkec.informatik.tu-darmstadt.de
Die Jan 10 17:39:21 CET 2006



Andreas Pakulat schrieb:
> On 10.01.06 07:46:42, Stefan Behnel wrote:
>> Andreas Pakulat schrieb:
>>> ich hab da ein kleines import-Dilemma. Mein Projekt ist wie folgt
>>> aufgebaut:
>>>
>>> MyProject/
>>> 	widgets/
>>> 		widget1.py
>>> 	ui/
>>> 		widget1.ui
>>> 		Ui_widget1.py
>>>
>>> Und ich wuerde gerne eine Klasse aus ui/Ui_widget1.py in
>>> widgets/widget1.py importieren. Ein einfaches
>>>
>>> from ui.Ui_widget1 import Ui_Widget1
>>>
>>> schlaegt fehl. 
>> Nein, tut es nicht. Zumindest dann nicht, wenn du dein Programm aus dem
>> Verzeichnis MyProject heraus startest.
> 
> Doch auch dann:
> 
> andreas at morpheus:~/projects/pyfilmdbsimpleui>python pyfilmdbsimpleui.py
> Traceback (most recent call last):
>   File "pyfilmdbsimpleui.py", line 6, in ?
>     from widgets.pictureformatwidget import PictureFormatWidget
>   File "/home/andreas/projects/pyfilmdbsimpleui/widgets/pictureformatwidget.py", line 2, in ?
>     from ui.Ui_pictureformatwidget import Ui_PictureFormatWidget
> ImportError: No module named ui.Ui_pictureformatwidget
> [31010 refs]
> andreas at morpheus:~/projects/pyfilmdbsimpleui>ld ui/
> ld: ui/: No such file: File format not recognized
> andreas at morpheus:~/projects/pyfilmdbsimpleui>ls ui/
> firmwidget.ui           soundformatwidget.ui  Ui_pictureformatwidget.py
> locationwidget.ui       subtitlewidget.ui     Ui_releasewidget.py
> mainwidget.ui           Ui_firmwidget.py      Ui_soundformatwidget.py
> moviewidget.ui          Ui_locationwidget.py  Ui_subtitlewidget.py
> personwidget.ui         Ui_mainwidget.py      Ui_versionwidget.py
> pictureformatwidget.ui  Ui_moviewidget.py     versionwidget.ui
> releasewidget.ui        Ui_personwidget.py

Nein, sondern eben nur dann, wenn ui kein Package ist, wie in deinem Fall. Du
braucht eine (ggf. leere) Datei __init__.py im ui Verzeichnis, damit Python
das auch als Package akzeptiert. Siehe Beschreibung des Modulsuchalgorithmus
in der Python-Doku.

Stefan