は、私は私のプロジェクトのためにこのような構造を持つようにしたい:Pythonの輸入構造
requirements.txt
README.md
.gitignore
project/
__init__.py
project.py
core/
__init__.py
base.py
engines/
__init__.py
engine1.py
engine2.py
utils/
__init__.py
refine_data.py
whatever.py
アプリケーションがproject/project.py
から実行されます。しかし、相対インポートまたは絶対インポートを使用すると、インポートエラーが発生します。
両方のエンジンがproject.core.base
からインポートする必要があり、utilsのは、同様にproject.core.base
からインポートする必要がある、とproject.py
(メインファイルが走ったが)engines
からインポートできるようにする必要があります。
絶対輸入は動作しません:
エラーを与える# engines/engine1.py
from project.core.base import MyBaseClass
:
ImportError: No module named project.core.base
しかし、私が代わりに
# engines/engine1.py
from ..core.base import MyBaseClass
相対インポートを試みる場合、私は得る:
ValueError: Attempted relative import beyond toplevel package
Githubの他のプロジェクトも同様に構造化されていますが、これはあらゆる問題を引き起こすようです。これをどのように機能させるには?
兄弟パッケージはちょうど互いからインポートすることができるはずです。エンジンはただコアをインポートできます。 – pvg