Yablargo Yablargo - 1 year ago 143
Python Question

How to import python class file from same directory?

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

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

Answer Source

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


import models.finding

or, probably best:

import .finding  # The . means "from the same directory as this module"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download