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!
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"