Suppose in the current directory there is a file named somecode.py
, and a directory named somecode
which contains an __init__.py
file.
Packages will be imported before modules. Illustrated:
% tree .
.
|-- foo
| |-- __init__.py
| `-- __init__.pyc
`-- foo.py
foo.py
:
% cat foo.py
print 'you have imported foo.py'
foo/__init__.py
:
% cat foo/__init__.py
print 'you have imported foo/__init__.py'
And from interactive interpreter:
>>> import foo
you have imported foo/__init__.py
I have no idea where this is officially documented.
Edit per comment: This was performed with Python 2.7 on Mac OS X 10.6.7. I also performed this using Python 2.6.5 on Ubuntu 10.10 and experienced the same result.
tested in Windows 10 (Python version 3.5) and on Ubuntu Linux (Python version 2.7 and 3.5) using the following directory:
https://github.com/alphaCTzo7G/stackexchange/tree/master/python/order_import_module_vs_package
The module is always loaded and the following message is printed out every time:
"you have imported foo/init.py"
So it seems to be consistent across these Systems, that the package is loaded first.