pythonでの連続した複数ファイルのimportの方法について
環境:
Python 3.7.2
macOS
実現したい事
- main.pyから、sub1を正常にimportする
現在、以下のようなディレクトリ構成、ソースコードで、python3のプログラムを書いています。
├── main.py └── modules ├── sub1.py └── sub2.py
python
1# main.py 2from modules import sub1 3 4if __name__ == '__main__': 5 sub1.sub1_func()
python
1# modules/sub1.py 2import sub2 3 4def sub1_func(): 5 sub2.sub2_func() 6 7if __name__ == '__main__': 8 sub1_func()
python
1# modules/sub2.py 2def sub2_func(): 3 print('sub2')
やりたいことは、
main.pyがsub1.pyをimportし、sub1内にあるsub1_func()を利用することなのですが、
sub1_func()はsub1.pyと同じディレクトリ内にあるsub2.pyのsub2_func()を参照しています。
この時main.pyを実行すると、ModuleNotFoundError: No module named 'sub2'
が出てしまいます。
そこで、main.pyから見た時の事を考え、sub1.pyのimport文を、import sub2
からfrom modules import sub2
に変更したところ、想定通りの正しい動作が確認できましました。("sub2"が出力される)
しかし、今度はこの状態でsub1.pyを実行すると、当たり前ですが、ModuleNotFoundError: No module named 'modules'
と出てしまいます。
sub1は、他のモジュールからも参照する予定なので、sub1のimportをimport sub2
のままにして、main.pyから、sub1を正常にimportする方法はあるでしょうか。
そもそも、このようなファイル構成にすることがあまりよくないのでしょうか。
pythonに詳しい方がいらっしゃいましたら、ご教授いただけないでしょうか。
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/21 12:02