Comment importer des fichiers de classe python à partir du même répertoire?

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

à partir de mon main.py je n'ai tout 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 de mon application.

j'ai un modèle qui dépend d'un autre modèle, de telle sorte que dans mon engine.py j'ai besoin d'importer finding.pyengine.py. Quand je fais: from finding import Finding

j'ai l'erreur No Such Module exists.

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

Edit 1: Apparemment je peux faire: from .finding import Finding et ça marche. Et la réponse ci-dessous reflète également cela, donc je suppose que c'est raisonnablement correct. J'ai corrigé le nom de mon fichier et j'ai déplacé mes tests dans un autre répertoire. Merci!

23
demandé sur Demitri 2014-01-15 17:56:57

1 réponses

puisque vous utilisez Python 3, qui rejette ces importations relatives (cela peut conduire à une confusion entre des modules du même nom dans des paquets différents).

utiliser l'un ou l'autre:

from models import finding

ou

import models.finding

ou, mieux sans doute:

from . import finding  # The . means "from the same directory as this module"
33
répondu RemcoGerlich 2016-10-15 06:35:14