如何从同一目录导入python类文件?

时间:2014-01-15 13:56:57

标签: python python-3.x python-import

我的Python 3.3项目中有一个名为/ models。

的目录

来自我的main.py我只是做了一个

from models import *

__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

这在我的应用程序中效果很好。

我有一个依赖于其他模型的模型,因此在engine.py我需要在finding.py中导入engine.py。当我这样做时:from finding import Finding

我收到错误No Such Module exists

如何从同一模块/目录中的文件A导入B类?

编辑1: 显然我可以这样做:from .finding import Finding这样可行。下面的答案也反映了这一点,所以我认为这是合理的正确。我已经修复了我的文件命名并将测试移到了另一个目录,现在我运行得很顺利。谢谢!

2 个答案:

答案 0 :(得分:33)

由于您使用的是Python 3,它不允许这些相对导入(它可能导致不同包中同名模块之间的混淆)。

使用:

from models import finding

import models.finding

或者,可能是最好的:

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

答案 1 :(得分:0)

显然,我可以这样做:from .finding import Finding,这可行。

下面的答案也反映了这一点,所以我认为这是合理的。

我已经修复了文件命名问题,并将测试移到了其他目录,并且现在运行平稳。谢谢!