Pythonで別ディレクトリのファイルを読み込む(インポートする)方法

python

Pythonで別ディレクトリのファイルをインポートする方法を紹介します。

__init__.pyってなに?という人も使い方を説明しますので、参考にしてみてください。

同じディレクトリ内のファイルを読み込む

まずは復習を兼ねて同じディレクトリ内のファイルをインポートしてみます。

- greet.py
- main.py

greet.pyには「hello」と表示するモジュールがあるとします。

def hello():
    print('hello')

これをmain.pyで読み込む場合は以下のような記述になります。

import greet
hi = greet.hello 
print(hi)
=> hello

import greetでgreet.pyのモジュールを読み込みます。なお、.pyの記述は不要になります。

そして、greet.helloでgreetファイルの中にあるhelloメソッドを呼び出しています。

別ディレクトリのファイルをインポートする

いよいよ本題。先ほど同ディレクトリ内のファイルをインポートしましたが、次は別ディレクトリ内にあるファイルをインポートします。

dirディレクトリ内にあるgreet.pyをmain.pyから呼び出します。

- dir 
    L greet.py

- main.py

その場合、main.pyはこのような記述になります。

from dir import greet
hi = greet.hello 
print(hi) 
=> error!

from dir でディレクトリを指定し、import greetでファイルを指定しています。

ただ、この場合にはエラーが返ってきます。コード自体は間違ってはないのですが、ディレクトリ側にミスがあります。

__init__.pyをディレクトリ内に設置する

上記の場合ではエラーが返ってきます。これはディレクトリ内に__init__.pyファイルを記述していないためです。

__init__.pyを記述することでそのディレクトリがpythonスクリプトがあるディレクトリを表すことになります。

ちなみに__init__pyの中身は何も記述しなくてOKです。

このように__init__pyを配置します。これで先ほどエラーが出ていたmain.pyからgreet.pyを読み込むことができます。

- dir
    L __init__.py
    L greet.py

- main.py


カテゴリー