__init__.pyって空ファイルなのになんであるのか疑問だったから調べてみた
仕事でパッケージをインストールするといつも__init__.pyがありました。
なんだろうこれ?と思って開いても何も書いてないことの方が多く
「??????」となりながらも、なんかパッケージにはこういうファイルがいるんだなと漠然と思ってました。
今回、ブログを始めるにあたって備忘録の役割も持たせるかと思い、いい機会となったのでしっかり調べてみることにしました。
このファイルがないと、パッケージとして認識させられない?
まずは、ファイル名からinitとあるってことはinitialize(初期化)が絡んでくるんだろうと、あたりをつけてみました。
あるディレクトリを、パッケージが入ったディレクトリとしてPython に扱わせるには、ファイル
__init__.py
が必要です。このファイルを置かなければならないのは、よくある名前のディレクトリにより、モジュール検索パスの後の方で見つかる正しいモジュールが意図せず隠蔽されてしまうのを防ぐためです。最も簡単なケースではただの空ファイルで構いませんが、パッケージのための初期化コードを実行したり、後述の変数を設定してもかまいません。
つまり、フォルダに入ったpythonファイルがパッケージであること認識させるためのもので、インポートする時の初期化を行ってくれるファイル。
このファイルが置いていないパッケージのモジュールをインポートしようとしても、エラーになると・・・・ほえーそうだったのか。
そして驚愕の事実
ずっとPythonの2系を使っていたので全く知りませんでしたが、Python3系の3.3から不要になったそうです。
仕事ではまだ2系が幅を利かせてるのでまだまだこいつとの縁はきれませんが、今回調べることで新しい内容が知れたので良しとしましょう・・・・そうか、いらないのか・・・