[Tutor] Import package module problem

spir denis.spir at free.fr
Tue May 12 09:01:50 CEST 2009


Le Mon, 11 May 2009 21:44:09 +0100 (BST),
mandel at themacaque.com s'exprima ainsi:

> Hello there,
> 
> I have just started working with python and I have some issues
> understanding how I should be importing modules from packages. Curretly I
> have the following tree structure:
> 
> general/
>     __init__.py
>     address_book.py
> groups/
>     __init__.py
>     contact_group.py
> 
> where groups and general are in the same level and all the __init__.py
> files are empty.
> 
> In address_book.py I want to import the ContactGroup which is at
> contact_group.py. I have try the following posibilities:
> 
> from ..groups.contact_group import ContactGroup
> from groups.contact_group import ContactGroups
> from groups.contact_group import *
> 
> But I cannot get it working. I know that the third option will not work
> because I have not set up __all__ but I do not understand why it does not
> work. I have read books and tutorials about it, but I cannot get it.
> 
> Am I doing something wrong? I would really appreciate a hand or pointer to
> s step by step example.

Not sure at all, 'cause python packaging is still rather unclear for me, but I guess you should have module (or other names thingies) imported inside __init__.py; and that's precisely their main purpose (in addition to possibly running startup code). If I'm right, simply writing in groups/__init__.py
   import contact_group
or
   from contact_group import ContactGroups
should do the job. Actually, python does *not* automatically populate (sub-)packages' dict of names with the files in the directory (as I would also have expected).

[The reason why I still do not understand what python packaging, esp. the use of __init__ files, is supposed to bring to the developper and/or the user. I've read several docs several times, but they all say the same, even using the same examples, and none points to the actual purpose. Having a 'normal' py file importing names intended to be exported would do the same job. Anyone?]

Denis
 
> Kr,
> 
> Manuel
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 


------
la vita e estrany


More information about the Tutor mailing list