本文主要是对模块与包几个问题的一句话解释。
-
构建一个模块层级包,在包的模块里面增加__init__.py可以按照包路径对包中模块进行索引
-
控制模块被全部倒入的内容, 使用__all__ = []导入模块中需要导入的内容
-
使用相对路径名导入包中子模块, 使用., ..作为相对路径引用包名,只适用“from import 语句”
-
将模块分割成多个文件,将一个类中不同的子类分割成单独的文件放在目录中
-
利用命名空间导入目录分散的代码, 将目录名加入到sys.path.extend中并且不能也有__init__.py
-
重新加载模块, 使用imp.reload()重新加载包,存在的问题是,不能更新from import 的包,届时会加载两个同样的函数
-
运行目录或压缩文件, 在包目录中添加__main__.py,该文件作为主程序,届时直接运行目录就可以执行程序。
-
读取包中的数据文件, 使用pkgutil.get_data(__package__, ‘some_data.dat’)
-
将文件夹加入到sys.path中,第一种方式使用 env PYTHONPATH=/some/some.py:/some2/some2.py 第二种创建一个.pth文件(某个 Python 的 site-packages 目录),将需要的目录列举出来。这个使用调远程的代码。
-
通过字符串名导入模块,使用importlib.import_module
-
通过钩子远程加载模块,配置http服务器python -m http.server 15000 可以远程调用包。书中的代码可以复用
-
导入模块的同时修改模块, 使用钩子存储已加载的模块,写装饰器函数,在模块被加载时出发行为。
-
安装私有的包, python setup.py install —user
-
创建新的Python 环境, 使用pyvenv(目前无法使用)创建,该环境不包括任何第三方库。
-
分发包, 写setup.py minifest.in 可以使用第三方库setuptool,distribute来发布包。