此处import-hooks写明元挂钩已在sys.meta_path
中注册。此列表中还有 finders 。那么 meta hook 和 finder 之间有什么区别?它们是一样的吗?为什么他们保持在同一个地方?
答案 0 :(得分:1)
您引用的文件说:
通过向sys.meta_path
添加新的finder对象来注册Meta钩子
所以,我会说是的,他们是一回事。
答案 1 :(得分:1)
它们是微妙的不同。这个document提供了对进口机制的全面讨论。
在导入处理开始时调用Meta钩子。因此,他们可以参与所有类型的导入,包括内置模块或冻结模块等导入,以及通过sys.path
处理基于磁盘的模块位置的开始。基本上,在这个级别
稍后在处理每个sys.path
条目期间的导入处理中调用路径挂钩。他们有机会返回一个对象,该对象将负责在该特定路径条目中查找模块。例如,如果sys.path
包含[/usr/lib/Python3, /home/user/mypython]
,您可以提供一个路径挂钩,它可以执行非标准内容来查找项目中的模块mypython
两个钩子都允许您提供finder
,它可以完全负责在特定上下文中定位模块。例如,元路径挂钩用于从zip
文件导入模块。