Suppose I have following files
tata/foo.py
tata/yoyo.py
foo/__init__.py
foo/bar.py
In file foo.py
I do
import foo
Use:
from __future__ import absolute_import
This seems to be a classical issue described in PEP 328
a local module or package can shadow another hanging directly off sys.path
to deal with it:
-m
option).Use Python 3 which has so-called "absolute import behaviour" or add
from __future__ import absolute_import
This is an example:
files:
test
|
import_test
├── foo
│ ├── bar.py
│ ├── bar.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── __init__.py
├── __init__.pyc
└── tata
├── foo.py
├── foo.pyc
├── __init__.py
├── __init__.pyc
└── yoyo.py
yoyo.py:
#!/usr/bin/env python
# encoding: utf-8
from __future__ import absolute_import
from ..foo import bar
print 'cool'
Test command:
cd test
python -m import_test.tata.yoyo
output:
cool