LoginSignup
36
25

More than 5 years have passed since last update.

Pythonで親階層のモジュールをimportする

Last updated at Posted at 2019-03-05

python 3.7でのみ動作検証しました。

以下のような構成があったとします。


sample/
├── sample1.py
├── main
│   ├── main1.py
│   └── src1
│       ├── main2.py
│       └── src2
│           ├── main3.py
│           └── main4.py
└── sub
    └── sub1.py

main4.pyから

  • main3.py
  • main2.py
  • main1.py
  • sample1.py
  • sub1.py

を呼び出したいときのメモです。

Pythonでimportを記述した場合、ライブラリを探すディレクトリが決まっています。しかしそこには、実行ファイルを含むディレクトリとそのサブディレクトリ群しか含まれません。

実行ファイル親階層にあるファイルをimportする場合、探索範囲に指定ディレクトリを追加する必要があります(パスが通っている状態にする)。

なお、 main4.py 以外のファイルでは、以下の内容で実装されてるとします。

def hello():
    print(os.path.basename(__file__)) # 該当のファイル名を出力

とりあえず動く

main4.py
import main3

import sys
sys.path.append('../')
import main2

sys.path.append('../../')
import main1

sys.path.append('../../../')
import sample1

sys.path.append('../../../sub')
import sub1

main3.hello()
main2.hello()
main1.hello()
sample1.hello()
sub1.hello()

参考

36
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
25