Python:通过模块名称加载模块

6

我正在开发一个Django项目,它服务于多个站点。根据不同的站点,我想从不同的模块中导入不同的功能。如果我有包名和模块名的字符串,我该如何在Python中导入一个模块?

2个回答

11

在Python中,通常可以使用__import__内置函数或imp模块的特性:

>>> sys1 = __import__("sys")
>>> import imp
>>> sys2 = imp.load_module("sys2", *imp.find_module("sys"))
>>> import sys
>>> sys is sys1 is sys2
True

8

Django有自己的导入函数,可以从字符串中获取对象。来自文档

django.utils.module_loading

Functions for working with Python modules.

import_string(dotted_path)

Imports a dotted module path and returns the attribute/class designated by the last name in the path. Raises ImportError if the import failed. For example:

from django.utils.module_loading import import_string
ValidationError = import_string('django.core.exceptions.ValidationError')

is equivalent to:

from django.core.exceptions import ValidationError

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接