2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで親ディレクトリにあるモジュールをインポートする

Last updated at Posted at 2019-10-26

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
さぶもじゆーる

参考URL

Pythonの相対インポートで上位ディレクトリ・サブディレクトリを指定

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?