web-dev-qa-db-ja.com

同じディレクトリからpythonクラスファイルをインポートするには?

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 in engine.py。私がする時: from finding import Finding

エラーが表示されるNo Such Module exists

同じモジュール/ディレクトリのファイルAからクラスBをインポートするにはどうすればよいですか?

編集1:どうやらできる:from .finding import Findingそしてこれは動作します。そして、以下の答えもこれを反映しているので、これはかなり正しいと思います。ファイルの命名を修正し、テストを別のディレクトリに移動しましたが、現在はスムーズに実行されています。ありがとう!

25
Yablargo

Python 3を使用しているため、これらの相対的なインポートは許可されません(異なるパッケージの同じ名前のモジュール間で混乱が生じる可能性があります)。

次のいずれかを使用します。

from models import finding

または

import models.finding

または、おそらく最高の:

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