17.2.6.6 定制包导入
可以采用同样的方式加载其他模块和子包。
import sys
import sys_shelve_importer
def show_module_details(module):
print(' message :',module.message)
print(' __name__ :',module.__name__)
print(' __package__ :',module.__package__)
print(' __file__ :',module.__file__)
print(' path__ :',module.__path__)
print(' __loader__ :',module.__loader__)
filename = '/tmp/pymotw_import_example.shelve'
sys.path_hooks.append(sys_shelve_importer.ShelveFinder)
sys.path.insert(0,filename)
print('Import of "package.module1":')
import package.module1
print()
print('Examine package.module1 details:')
show_module_details(package.module1)
print()
print('Import of "package.subpackage.module2":')
import package.subpackage.module2
print()
print('Examine package.subpackage.module2 details:')
show_module_details(package.subpackage.module2)
查找工具接收要加载的模块的完整名(有点号),并返回一个ShelveLoader,其被配置为从指向这个shelf文件的路径入口加载模块。模块的完全限定名被传递到加载工具的load_module()方法,它会构造并返回一个module实例。