Package1/ __init__.py Module1.py Module2.py Package2/ __init__.py Module1.py Module2.py
shell
咱們能夠就這樣導入一個包: spa
from Package1 import Module1作用域
from Package1 import Package2it
import Packag1.Module1ast
import Packag1.Package2 import
__init__.py 控制着包的導入行爲。假如 __init__.py 爲空,那麼僅僅導入包是什麼都作不了的。變量
>>> import Package1module
>>> Package1.Module1object
Traceback (most recent call last):im
File "<pyshell#1>", line 1, in ?
Package1.Module1AttributeError: 'module' object has no attribute 'Module1'
咱們須要在 __init__.py 裏把 Module1 預先導入:
#文件 __init__.py
import Module1
>>> import Package1
>>> Package1.Module1
<module 'Package1.Module1' from 'Module.pyc'>
__init__.py 中還有一個重要的變量,叫作 __all__。所有導入
from PackageName import *
這時 import 就會把註冊在包 __init__.py 文件中 __all__ 列表中的子模塊和子包導入到當前做用域中來。
好比:
#文件 __init__.py
__all__ = ['Module1', 'Module2', 'Package2']