All imports in __init__.py
are made available when you import the package (directory) that contains it.
Example:
./dir/__init__.py
:
import something
./test.py
:
import dir
# can now use dir.something
EDIT: forgot to mention, the code in __init__.py
runs the first time you import any module from that directory. So it's normally a good place to put any package-level initialisation code.
EDIT2: dgrant pointed out to a possible confusion in my example. In __init__.py
import something
can import any module, not necessary from the package. For example, we can replace it with import datetime
, then in our top level test.py
both of these snippets will work:
import dir
print dir.datetime.datetime.now()
and
import dir.some_module_in_dir
print dir.datetime.datetime.now()
The bottom line is: all names assigned in __init__.py
, be it imported modules, functions or classes, are automatically available in the package namespace whenever you import the package or a module in the package.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…