Pythonでメインのスクリプトからモジュールをインポートする方法。メインのスクリプトとモジュールのディレトリ上の位置関係で方法が異なるため、それぞれの場合でメインのスクリプト(main.py)からモジュール(submodule.py)をインポートする方法を説明。
同じディレクトリにある場合
ディレクトリ構成
dir0
├main.py
└submodule.py
submodule.py
a='さぶもじゆーる'
main.py
import submodule
print(submodule.a)
実行結果
dir0> python main.py
さぶもじゆーる
子ディレクトリにある場合
ディレクトリ構成
dir0
├main.py
└dir1
└submodule.py
submodule.py
a='さぶもじゆーる'
main.py
import dir1.submodule as submodule
print(submodule.a)
実行結果
dir0> python main.py
さぶもじゆーる
親ディレクトリにある場合
ディレクトリ構成
dir0
├dir1
│└main.py
└submodule.py
これがやや面倒。
submodule.py
a='さぶもじゆーる'
ダメな例
main.py
import ..submodule as submodule
print(submodule.a)
実行結果
dir1> python main.py
File ".\main.py", line 1
import ..submodule
^
SyntaxError: invalid syntax
正解
main.py
import sys
from pathlib import Path
sys.path.append(str((Path() /'..').absolute()))
import submodule
print(submodule.a)
実行結果
dir1> python main.py
さぶもじゆーる