Hi, Hmm, this post on SO seems to suggest that importing from another sibling directory in a package ins't actually possibly in Python without some ugly hacks?
http://stackoverflow.com/questions/6323860/sibling-package-imports Did I read the above correctly? Is there another way I can structure my code so that I can run the sync_em.py and sync_pg.py scripts, and they can pull common functions from somewhere? Cheers, Victor On Tuesday, 29 October 2013 12:08:10 UTC+11, Victor Hooi wrote: > Hi, > > > > If I try to use: > > > > from .common.common_foo import setup_foo_logging > > > > I get: > > > > ValueError: Attempted relative import in non-package > > > > And the absolute imports don't seem to be able to find the right modules. > > > > Is it something to do with the fact I'm running the sync_em.py script from > the "foo_loading/em_load" directory? > > > > I thought I could just refer to the full path, and it'd find it, but > evidently not...hmm. > > > > Cheers, > > Victor > > > > On Tuesday, 29 October 2013 12:01:03 UTC+11, Ben Finney wrote: > > > Victor Hooi <victorh...@gmail.com> writes: > > > > > > > > > > > > > Ok, so I should be using absolute imports, not relative imports. > > > > > > > > > > > > I'd say it is fine to use relative imports, so long as they are > > > > > > explicit. (In Python 3, the default for an import is to be absolute, and > > > > > > the *only* way to do a relative import is to make it explicitly > > > > > > relative. So you may as well start doing so now.) > > > > > > > > > > > > > Hmm, I just tried to use absolute imports, and it can't seem to locate > > > > > > > the modules: > > > > > > > > > > > > > > In the file "foo_loading/em_load/sync_em.py", I have: > > > > > > > > > > > > > > from common.common_bex import setup_foo_logging > > > > > > > > > > > > So I'd recommend this be done with an explicit relative import: > > > > > > > > > > > > from .common.common_bex import setup_foo_logging > > > > > > > > > > > > or, better, import a module: > > > > > > > > > > > > from .common import common_bex > > > > > > > > > > > > or a whole package: > > > > > > > > > > > > from . import common > > > > > > > > > > > > -- > > > > > > \ “I went over to the neighbor's and asked to borrow a cup of | > > > > `\ salt. ‘What are you making?’ ‘A salt lick.’” —Steven Wright | > > > > > > _o__) | > > > > > > Ben Finney -- https://mail.python.org/mailman/listinfo/python-list