For this directory hierarchy:
.
├── hello
│ ├── __init__.py
│ └── world
│ └── __init__.py
└── test.py
And the Python source files:
test.py:
if __name__ == '__main__':
import hello
hello/__init__.py:
import world
hello/world/__init__.py:
print("yes you win")
Running test.py with Python 3.4 throws ImportError
saying that module world
is not found, but with Python 2.7 everything is fine.
I know that sys.path
is referenced when searching for the imported modules, so adding the directory hello
to sys.path
eliminates the error.
But in Python 2.7, before importing world
, the directory hello
is not in sys.path
either. What causes this difference? Is there any recursive searching policy applied in Python 2.7?