Python: загрузить модуль по имени - PullRequest
4 голосов
/ 05 июля 2010

Я работаю над проектом django, который обслуживает несколько сайтов; в зависимости от сайта я хочу импортировать различные функции из другого модуля; Как импортировать модуль в Python, если у меня есть имя его пакета и само имя модуля в виде строки?

Ответы [ 2 ]

10 голосов
/ 05 июля 2010

в 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
3 голосов
/ 16 октября 2016

Django имеет собственную функцию импорта для получения объекта из строки. Из документации :

django.utils.module_loading

Функции для работы с модулями Python.

import_string(dotted_path)

Импортирует пунктирный путь к модулю и возвращает атрибут / класс, обозначенный фамилией в пути. Вызывает ImportError, если импорт не удался. Например:

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

эквивалентно:

from django.core.exceptions import ValidationError
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...