Python
__init__.py

pythonでパッケージが__init__.pyがなくても動いた件

pythonで初めてパッケージの自作をしたときのメモです.

バージョンはPython 3.6.7です.

まず,parentというディレクトリを作り,そこにchildというディレクトリを作ります.

そして,そこにhello.pyというファイルを作りました.


parent/child/hello.py


def say_hello():
return "Hello!!"

そして,childディレクトリに__init__.pyという空のファイルを作りました.

次に,parentディレクトリに戻り,

main.pyというファイルを作ります.


parent/main.py

from child import hello 

print(hello.say_hello())


結果,次のような構成となりました.

parentディレクトリ

|
|-- main.py
|
|-- childディレクトリ
|
|-- hello.py
|--__init__.py #空ファイル

parentディレクトリでmain.pyを実行すると,次のように表示されました.

$ python main.py

Hello!!

さて,__init__.pyの意味を確かめたく,試しにこれを削除してみました.

$ cd child

child $ del __init__.py
child $ cd ..

そしてmain.pyを実行するとやはり,正常に表示されます.

$ python main.py

Hello!!

参考書では__init__.pyがないと正常に動かないとあったのですが,不思議に思い,調べてみました.

すると,こちらのサイトによると,Python 3.3以降では__init__.pyはなくても動きはするということが分かりました.(初期化処理を行える点で,あったほうがいいけど)

以上,備忘録でした