2.7. 模块和包

2.7.1. 构建一个模块的层级包

封装成包是很简单的。在文件系统上组织你的代码,并确保每个目录都定义了一个__init__.py文件。

2.7.2. 控制模块被全部导入的内容

# somemodule.py
def spam():
   pass

def grok():
   pass

blah = 42
# Only export 'spam' and 'grok'
__all__ = ['spam', 'grok']

2.7.3. 使用相对路径名导入包中子模块

from . import grok

2.7.4. 将模块分割成多个文件

# __init__.py
from .a import A
from .b import B

2.7.5. 重新加载模块

使用 imp.reload() 来重新加载先前加载的模块。

2.7.6. 运行目录或压缩文件

目录下放置__main__.py文件, 即可。

2.7.7. 将文件夹加入到sys.path

  1. 你可以使用PYTHONPATH环境变量来添加。

  2. 创建一个.pth文件,将目录列举出来

  3. sys.path.insert(0, ‘/some/dir’)

2.7.8. 通过字符串名导入模块

In [3]: import importlib

In [4]: m = importlib.import_module('math')

In [5]: m.fabs(-1.0)
Out[5]: 1.0