私はPython(Python3)アプリケーション(パッケージではありません)を書いており、正しいディレクトリ構造についていくつか疑問を持っています。私はこれを持っている現時点では: - 例えば、launch.py
への正しいパスを付加して当然のパッケージではなくアプリケーションでモジュールをインポートする
myapp/
__init__.py
launch.py
core/
__init__.py
some_core_class.py
other_core_class.py
gui/
__init__.py
some_gui_class.py
other_gui_class.py
私は、アプリケーションが私のディレクトリ構造内の任意の場所からpython launch.py
で開始することにしたいですpython myapps/myapp/launch.py
。
私のモジュールの中で私は絶対的なインポートを使用しています。 some_core_class.py
にはfrom myapp.core.other_core_class import OtherCoreClass
と書いてあります。私はlaunch.py
で同じ方法を使用します。 from myapp.core.some_core_class import SomeCoreClass
。
しかし、たとえばから直接python launch.py
と書いて起動すると、結果はImportError: No module named 'myapp'
になります。 launch.py
からfrom core.some_core_class import SomeCoreClass
にインポートを変更しても動作させることができましたが、これは正しい絶対インポートではなく、他のファイルのインポートと矛盾しています。
私の問題を解決する最良の方法は何ですか?私はmyapp
にPATH
環境変数を追加することを避けたいと思います。これは、ユーザーまたはインストーラが手動で編集する必要があります。アプリケーションをどこからでも起動できるように、コードまたはインポートをどのように変更する必要がありますか?それも可能ですか?
私はこれが私が選択する解決策であると仮定して、この質問に他の回答はありませんでした。 –