2009-10-15 9 views
0

J'ai un projet Django situé dans/var/django/projet/où/var/django/est dans le PATHles importations relatives de __init__ dans plusieurs fichiers applications Django

dans ce projet, j'ai:

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

utils/__init__.py contient une fonction nommée get_preview

utils/tools.py contient une fonction nommée get_related

Comment peut utils/__init__.py importer get_related de utils/tools.py?

Comment peut utils/tools.py importer get_preview à partir de utils/__init_.py?

J'ai essayé des importations par rapport ainsi que les importations statiques, mais semblent avoir une erreur dans tools.py lorsque je tente de from project.utils import get_preview

Répondre

0

Vous pouvez le faire, il vous suffit d'effectuer l'une des importations lors de l'exécution pour éviter l'importation circulaire.

Par exemple, __init__.py:

from project.utils.tools import get_related 

def get_preview(): 
    # ... 

et tools.py:

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

Vous ne pouvez pas (et ne devrait pas). Vous structurez votre code très mal si les fichiers de votre module référencent le code associé au __init__.py. Déplacez les deux fonctions dans __init__.py ou les deux sur __init__.py ou placez-les dans des modules distincts. Ce sont vos seules options.

2

Oui, c'est une mauvaise structure. Vous devez regarder ici avec la création d'une importation circulaire entre les deux fichiers. About circular imports.

Questions connexes