wxPython フレームワークを使用して、かなり複雑なデスクトップ アプリケーションを開発しています。この時点で、app には既に多数のモジュール (ライブラリ、UI モジュール、ユーティリティ モジュール) が含まれています。
プロジェクトは次のようになります。
MyApp/
__init__.py -- empty
main.py
util/
__init__.py -- empty
lib1/
__init__.py
lib2/
__init__.py
gui/
__init__.py -- empty
window1.py
残念ながら、現在のプロジェクト構造では、次のpython MyApp/main.py
ようなエラーで失敗するため、絶対インポートを使用できませんImportError: No module named MyApp.gui
これを克服するために、MyApp を実行可能パッケージにしたいと思います。
my_app/
__init__.py -- empty
__main__.py
util/
__init__.py -- empty
lib1/
__init__.py
lib2/
__init__.py
gui/
__init__.py -- empty
window1.py
を使用してアプリケーションを開始できるようになりましたpython -m my_app
これまでのところ、すべて問題ないように見えますが、誰もそのようなアプローチを使用していないため、私は疑問に思っています。wxPython に付属のデモを見ると、ほとんどフラットなプロジェクトであることがわかります。
私は間違いなく最も賢い人ではないので、なぜ誰もそのようなアプローチを使用しないのか、単純で明白なものが欠けています。
たぶん、サブフォルダーまたはフラットなプロジェクト構造に固執する必要がありますか? たぶん、絶対インポートはそのような変更に値しませんか?