web-dev-qa-db-fra.com

Comment importer le fichier de classe python depuis le même répertoire?

J'ai un répertoire dans mon projet Python 3.3 appelé/models.

de mon main.py Je fais simplement un

from models import *

dans mon __init__.py:

__all__ = ["Engine","EngineModule","Finding","Mapping","Rule","RuleSet"]
from models.engine import Engine,EngineModule
from models.finding import Finding
from models.mapping import Mapping
from models.rule import Rule
from models.ruleset import RuleSet

Cela fonctionne très bien à partir de mon application.

J'ai un modèle qui dépend d'un autre modèle, tel que dans mon engine.py Je dois importer finding.py dans engine.py. Quand je fais: from finding import Finding

J'obtiens l'erreur No Such Module exists.

Comment puis-je importer la classe B à partir du fichier A dans le même module/répertoire?

Edit 1: Apparemment je peux faire: from .finding import Finding et cela fonctionne. Et la réponse ci-dessous reflète cela aussi, donc je suppose que c'est raisonnablement correct. J'ai corrigé mon nom de fichier et déplacé mes tests dans un répertoire différent et je fonctionne bien maintenant. Merci!

25
Yablargo

Puisque vous utilisez Python 3, ce qui interdit ces importations relatives (cela peut entraîner une confusion entre les modules du même nom dans différents packages).

Utilisez soit:

from models import finding

ou

import models.finding

ou, probablement mieux:

from . import finding  # The . means "from the same directory as this module"
34
RemcoGerlich