この記事では、Pyhtonを使って開発をしているといつの間にか勝手に作成されている__pycache__
ディレクトリについて解説します。
結論から言ってしまえば__pycache__ディレクトリは「コンパイル済みのモジュールのキャッシュ」なので特に気にする必要はありません。
もう少し詳しく知りたい方や__pycache__ディレクトリを生成したくない(キャッシュしたくない)方だけ読み進めてください。
__pycache__ディレクトリとは?
__pycache__
ディレクトリは、キャッシュを保存しておくためのディレクトリです。ちなみに読み方は「パイキャッシュ」です。
Pythonではモジュールの読み込みを高速化するため、実行時にコンパイルしたモジュールを__pycache__
ディレクトリにキャッシュしておきます。
つまり、自作したモジュールをimportして実行することで__pycache__
が自動的に作成され、コンパイル済みのモジュールをキャッシュしといてくれるんですね。
例えば、以下の画像はtest.py
からmodule1.py
とmodule2.py
を読み込んだ場合の__pycache__
です。
実行するとこんな感じで自動的にキャッシュが作成されます。
作成されるファイルは、モジュール名.バージョン.pyc
という名前で生成されます。例えば、モジュール名がhello.py
で、CPythonのバージョンが3.9
だとすると__pycache__/hello.cpython-39.pyc
としてキャッシュされます。
ちなみに、モジュールのソースコードを変更するとコンパイル済みのものと変更日時を比較して再コンパイルが必要かどうかを判断しています。
キャッシュを作成したくない場合
Pythonコード実行時に-B
オプションを付けてやることでインポート時に.pyc
ファイルの書き込みを禁止することができます。
コマンドライン
python -B test.py
実行しても.pyc
ファイルもとい__pycache__
ディレクトリが作成されませんでした。