[Tutor] Import package module problem
mandel at themacaque.com
mandel at themacaque.com
Tue May 12 09:39:00 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
>> have the following tree structure:
>> 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
>> 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
>> 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
> import contact_group
> 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).
Lets see if I understand what you mean, in my example I should add an
import inside __init__.py to be able to use relative imports:
__init__.py >> from address_book import AddressBook
__init__.py >> from contact_group import ContactGroup
Lets say I have the above, would I be able to use the following?
from ..groups.contact_group import ContactGroup
I'm trying to use this type of import to be able to bundle my unit tests
with my code and let devels work with it. I have read somewhere that
__all__ can do the trick but it did not say how.
> [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?]
>> Tutor maillist - Tutor at python.org
> la vita e estrany
> Tutor maillist - Tutor at python.org
More information about the Tutor