Python:按名称加载模块

Ber*_*ant 4 python django import module

我正在研究一个服务于多个站点的django项目; 取决于我想从不同模块导入不同功能的站点; 如果我有一个包的名称和模块名称本身作为字符串,如何在Python中导入模块?

myk*_*hal 10

在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
Run Code Online (Sandbox Code Playgroud)


Zul*_*ulu 5

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

django.utils.module_loading

用于处理 Python 模块的函数。

import_string(dotted_path)
Run Code Online (Sandbox Code Playgroud)

导入虚线模块路径并返回路径中姓氏指定的属性/类。如果导入失败,则引发 ImportError。例如:

from django.utils.module_loading import import_string
ValidationError = import_string('django.core.exceptions.ValidationError')
Run Code Online (Sandbox Code Playgroud)

相当于:

from django.core.exceptions import ValidationError
Run Code Online (Sandbox Code Playgroud)