1. ホーム
  2. python

[解決済み] サブフォルダからのインポートモジュール

2022-07-12 18:50:33

質問

サブフォルダをモジュールとしてインポートしたい。そのため、各サブフォルダには __init__.py . 私のフォルダ構造は次のようなものです。

src\
  main.py
  dirFoo\
    __init__.py
    foofactory.py
    dirFoo1\
      __init__.py
      foo1.py
    dirFoo2\
      __init__.py
      foo2.py

私のメインスクリプトでは

from dirFoo.foofactory import FooFactory

このファクトリーファイルでは、サブモジュールをインクルードしています。

from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2

foofactoryを呼び出すと、pythonはサブモジュールのfoo1とfoo2をインポートできないというエラーが出ます。

Traceback (most recent call last):
  File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
  File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in    <module>
from dirFoo1.foo1 import Foo1
    ImportError: No module named dirFoo1.foo1

どのように解決するのですか?

を変更する必要はありません。 PYTHONPATH または sys.path ここで

パッケージ内の絶対インポートを適切に使用するには、"root" パッケージ名を同様に含める必要があります、例えば。

from dirFoo.dirFoo1.foo1 import Foo1
from dirFoo.dirFoo2.foo2 import Foo2

あるいは 相対インポート :

from .dirfoo1.foo1 import Foo1
from .dirfoo2.foo2 import Foo2