Organising packages/modules - importing functions from a common.py in a separate directory?
Victor Hooi
victorhooi at gmail.com
Mon Oct 28 21:08:10 EDT 2013
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 <victorhooi at 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
More information about the Python-list
mailing list