shtaxxx日記

コンピュータアーキテクチャについて研究している研究者の日記や技術紹介

親ディレクトリの子ディレクトリをimportするにはsys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))) )

ディレクトリの子ディレクトリ,つまり自分と同じ深さのディレクトリをimportしたいときに検索パスを追加する,

例えば

  • ~/proj/dirA/
  • ~/proj/dirB/

と2つのディレクトリがあったとする.このときに,dirB中のスクリプトからdirAをimportしたい場合には,

sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))) )

と検索パスに親ディレクトリを加える1行をdirB中のスクリプトに追記することで,同じ深さのディレクトリをimportできる.

os.path.abspath(__file__)にos.path.dirnameを2回適用することで,現在のファイルの絶対パスから親ディレクトリの絶対パスを生成している.
単純に"../"としないのは,上の例におけるprojを他のプロジェクトからimportしたときにも正しくimportできるようにするため.