How to import python class file from same director

2020-05-19 04:38发布

I have a directory in my Python 3.3 project called /models.

from my main.py I simply do a

from models import *

in my __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

This works great from my application.

I have a model that depends on another model, such that in my engine.py I need to import finding.py in engine.py. When I do: from finding import Finding

I get the error No Such Module exists.

How can I import class B from file A in the same module/directory?

Edit 1: Apparently I can do: from .finding import Finding and this works. And the answer below reflects this as well so I guess this is reasonably correct. I've fixed up my file naming and moved my tests to a different directory and I am running smoothly now. Thanks!

1条回答
唯我独甜
2楼-- · 2020-05-19 05:27

Since you are using Python 3, which disallows these relative imports (it can lead to confusion between modules of the same name in different packages).

Use either:

from models import finding

or

import models.finding

or, probably best:

from . import finding  # The . means "from the same directory as this module"
查看更多
登录 后发表回答