在Python中理解导入器协议的问题

时间:2011-03-23 05:24:35

标签: python

根据http://www.python.org/dev/peps/pep-0302/,我在理解导入器协议方面遇到了一些麻烦。如果fullname finder.find_module(fullname, path=None)参数永远包含a。 (点)?

也就是说,如果您要查找模块abc.efg.hij,则必须致电finder.find_module('hij', path='abc.efg')。致电finder.find_module('abc.efg.hij') 绝对不正确

这是对的吗?

1 个答案:

答案 0 :(得分:2)

不,只是说import abc.efg.hij最终会在导入过程的不同阶段产生3个不同的find_module来电:

find_module("abc", None)
find_module("abc.efg", abc.__path__)
find_module("abc.efg.hij", abc.efg.__path__)

探索importlib文档可能也是您感兴趣的: http://docs.python.org/py3k/library/importlib#importlib.abc.Finder.find_module