2011-03-07 22 views
0

我有一個應用程序需要用戶具有特定的目錄結構,就像django用templatetags做的那樣,我想知道的是如何在運行時從django項目中導入名爲foo的應用程序?
此外,如果應用程序存在,我應如何導入應用程序foo的特定模塊?如何創建一個需要特定模塊運行的django應用程序?

+0

您的應用程序是否完全具有django的目錄結構,或者它真的只是「非常像django」。你想讓Django使用這個目錄(使用models/templatetags)嗎?只需將您的應用程序添加到INSTALLED_APPS。之後,您可以通過「從my_app導入my_module」導入 – 2011-03-07 02:05:28

+0

http://docs.python.org/tutorial/modules.html – 2011-03-07 05:09:15

+0

@Torsten:我的應用程序沒有目錄結構。它只知道用戶的項目將有一個名爲foo的應用程序。 – 2011-03-07 07:01:53

回答

2

我認爲你的問題需要一些澄清細節。目前,它似乎把應用程序一樣簡單你的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__

+0

django如何做到這一點?他們也使用__import__嗎? – 2011-03-07 07:26:42

+0

是的,雖然它特別使用'django.utils.importlib.import_module'中的包裝器(它使用'__import__') – DrMeers 2011-03-07 08:34:52

+0

比那應該是你的答案。 – 2011-03-07 13:46:14

相關問題