您的位置:首页 > 编程语言 > Python开发

python 动态引入模块 importlib 和 __import__ 不一样

2017-08-04 10:04 597 查看
如图所示,应该推荐使用 importlib 的方式。

scrapy 的源码也正是使用的这种方式



附scrapy 源码中 scrapy/utils/misc.py 中引入源码的load_object 实现

def load_object(path):
"""Load an object given its absolute object path, and return it.

object can be a class, function, variable or an instance.
path ie: 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware'
"""

try:
dot = path.rindex('.')
except ValueError:
raise ValueError("Error loading object '%s': not a full path" % path)

module, name = path[:dot], path[dot+1:]
mod = import_module(module)

try:
obj = getattr(mod, name)
except AttributeError:
raise NameError("Module '%s' doesn't define any object named '%s'" % (module, name))

return obj
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: