如何创建一个需要特定模块运行的django应用程序?
我有一个应用程序需要用户具有特定的目录结构,就像django用templatetags做的那样,我想知道的是如何在运行时从django项目中导入名为foo的应用程序?
此外,如果应用程序存在,我应如何导入应用程序foo的特定模块?如何创建一个需要特定模块运行的django应用程序?
我认为你的问题需要一些澄清细节。目前,它似乎把应用程序一样简单你的PYTHONPATH(你的意思是一个Django应用程序吗?)(例如项目目录内):
try:
import foo
except ImportError:
pass # application mustn't be on pythonpath
else:
from foo import specific_module
# do stuff
根据您的要求,该代码可以在一个视图,或者甚至您的项目的__init__.py
,如果你想它发生得很早。 django启动过程的改进即将到来 - 留意startup.py
的功能。
如果您需要导入动态名称模块,你可能想看看__import__
你也有被称为django.utils.importlib.import_module的Django内的helper方法(它使用__import__
)
django如何做到这一点?他们也使用__import__吗? – 2011-03-07 07:26:42
是的,虽然它特别使用'django.utils.importlib.import_module'中的包装器(它使用'__import__') – DrMeers 2011-03-07 08:34:52
比那应该是你的答案。 – 2011-03-07 13:46:14
您的应用程序是否完全具有django的目录结构,或者它真的只是“非常像django”。你想让Django使用这个目录(使用models/templatetags)吗?只需将您的应用程序添加到INSTALLED_APPS。之后,您可以通过“从my_app导入my_module”导入 – 2011-03-07 02:05:28
http://docs.python.org/tutorial/modules.html – 2011-03-07 05:09:15
@Torsten:我的应用程序没有目录结构。它只知道用户的项目将有一个名为foo的应用程序。 – 2011-03-07 07:01:53