2010-07-05 179 views
2

我正在開發一個爲多個站點提供服務的django項目;取決於我想從不同模塊導入不同功能的站點;如果我有它的包名和模塊名本身作爲一個字符串,我該如何在Python中導入一個模塊?Python:通過名稱加載模塊

回答

9

在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 
1

Django的有自己的導入功能將得到一個字符串的客體。從documentation

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