2012-12-04 26 views
1

在我的django應用程序中,我有一個名爲projects和app的應用程序,名爲utils。我也有一個名爲utils的項目裏面有一個模塊來爲項目保存幫助函數。在django中導入兩個同名的模塊?

所以,我的文件結構將是這個樣子

... 
projects/ 
    utils/ 
     globals.py 
    views.py 
utils/ 
    tests.py 
... 

我遇到了一個問題,當我試圖導入從utils的東西(外一種)和Django的以爲我是從projects.utils進口。所以這給了我一個錯誤

# inside projects.views.py 
from utils.tests import foo 

由於我沒有tests.py在projects.utils,導入給了我一個錯誤。當然,我知道這一點,並試圖引用外部的utils。

有沒有辦法在django中清楚地引用外部utils和projects.utils,或者我應該只是將projects.utils的名稱更改爲其他名稱?

回答

3

默認情況下,直接包含在projects包中的import utils調用模塊將首先嚐試相對導入,然後選取projects.utils

最簡單的方法是通過以下編譯您的模塊的頂部,打開絕對導入:

from __future__ import absolute_import 

這將關閉此隱含的相對進口行爲(這也使得與之相匹配的Python 3)所以import utils將始終選擇頂級模塊。請注意,該編譯指示將僅影響其發生的文件內的導入:如果您希望在多個模塊中執行該操作,則需要在每個文件中包含該編譯指示。

您仍然可以在此模式下進行相對進口,但是你必須要明確:

from . import utils 
相關問題