は、私は、Python 3を使用して(それゆえ絶対輸入)午前言うと、私のディレクトリ構造は次のようになります。ファイルsub_dir_file.py
で__main__として使用され、別のディレクトリにあるファイルによってインポートされるファイルで、Pythonでモジュールをインポートする方法は?
> package:
> sub_directory
__init__.py
sub_dir_file.py
sub_dir_file2.py
__init__.py
main_dir_file.py
私はsub_dir_file2.py
から機能をインポートしたいです。キャッチは、を__name__ == '__main__'
、、、main_dir_file.py
にインポートすることができます。したがって、sub_dir_file.py
に私は相対的インポートを使用する場合:とき__name__ == '__main__'
from .sub_dir_file2 import some_function
モジュールはmain_dir_file.py
から実行するとき完全に細かい実行するが、相対インポートとして(直接実行されたときにエラーをスローすることは実行できないIしかし使用する場合。通常の絶対インポートは、sub_dir_file.py
はメインとして実行されますが、main_dir_file.py
からインポートすることはできません
この問題を解決するための最もエレガントな方法だろうどのような1つの明白な解決策があると思われる:。?
if __name__ == '__main__':
from sub_dir_file2 import some_function
else:
from .sub_dir_file2 import some_function
しかし、それは非常にpythonicようではありません。