Python: what does "import" prefer - modules or packages? Python: what does "import" prefer - modules or packages? python python

Python: what does "import" prefer - modules or packages?


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__.pyprint 'you have imported foo/__init__.py'

And from interactive interpreter:

>>> import fooyou 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

Result

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.