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