2009-10-15 50 views
0

我有一個Django項目位於位於/ var/Django的/項目/其中的/ var/Django的/是在PATH從__init__相對進口多文件的Django應用程式

該項目中,我有:

___init__.py 
manage.py 
utils/ 
    __init__.py 
    tools.py 

utils/__init__.py包含一個名爲get_preview

utils/tools.py功能包含一個名爲功能get_related

utils/__init__.py如何從utils/tools.py導入get_related

utils/tools.py如何從utils/__init_.py導入get_preview

我已經試過相對進口以及靜態導入,但似乎得到一個錯誤的tools.py當我嘗試from project.utils import get_preview

回答

0

你可以做到這一點,你只需要在運行時使其中一個導入發生,以避免循環導入。

例如,__init__.py

from project.utils.tools import get_related 

def get_preview(): 
    # ... 

tools.py

def get_related(): 
    from project.utils import get_preview 
    # ... 
    get_preview() 
2

你不能(也不應該)。如果模塊中的文件引用了與之相關的__init__.py中的代碼,那麼您的代碼結構很差。將兩個函數都移動到__init__.py或將它們兩個移出__init__.py或將它們放入單獨的模塊中。那些是你唯一的選擇。