しぷぜん

素人プログラマなおいのStep Zero to Oneブログ

__init__.pyって空ファイルなのになんであるのか疑問だったから調べてみた

仕事では、パッケージをインストールするといつも__init__.pyがありました。

 

なんだろうこれ?と思って開いても何も書いてないことの方が多く

「??????」となりながらも、なんかパッケージにはこういうファイルがいるんだなと漠然と思ってました。

 

今回、ブログを始めるにあたって備忘録の役割も持たせるかと思い、いい機会となったのでしっかり調べてみることにしました。

 

このファイルがないと、パッケージとして認識させられない?

まずは、ファイル名からinitとあるってことはinitialize(初期化)が絡んでくるんだろうと、あたりをつけてみました。

 

以下、Pythonチュートリアルから抜粋

あるディレクトリを、パッケージが入ったディレクトリとしてPython に扱わせるには、ファイル __init__.pyが必要です。このファイルを置かなければならないのは、よくある名前のディレクトリにより、モジュール検索パスの後の方で見つかる正しいモジュールが意図せず隠蔽されてしまうのを防ぐためです。最も簡単なケースではただの空ファイルで構いませんが、パッケージのための初期化コードを実行したり、後述の変数を設定してもかまいません。

 

つまり、フォルダに入ったpythonファイルがパッケージであること認識させるためのもので、インポートする時の初期化を行ってくれるファイル。

このファイルが置いていないパッケージのモジュールをインポートしようとしても、エラーになると・・・・ほえーそうだったのか。

 

そして驚愕の事実

ずっとPythonの2系を使っていたので全く知りませんでしたが、Python3系の3.3から不要になったそうです。

www.python.org

 

仕事ではまだ2系が幅を利かせてるのでまだまだこいつとの縁はきれませんが、今回調べることで新しい内容が知れたので良しとしましょう・・・・そうか、いらないのか・・・