備忘録:実行ファイルより上層に配置した自作モジュールをimport
いつも躓くので書いておく
結論
moduleがあるディレクトリのpathをPYTHONPATHへ追加する
# .pyの場合
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '実行ファイルからの相対path'))
# .ipynbの場合
import os
import sys
from pathlib import Path
sys.path.append(os.path.join(Path().resolve(), '実行ファイルからの相対path'))
ipynbではfile変数を参照できないのでPath()から参照する
通常pythonは環境変数PYTHONPATHの上位から順に探索してるらしい
感想
- これで読み込めるが、sys.path.append("相対path")との違いがよくわかってない
- 首記のコードでは実行ファイルまでのpathに相対pathをつなげて(絶対pathとして)いるのだろうけど
備考
PYTHONPATHをコード内でいじらず、pthファイルに記述する方法もある