__pycache__ディレクトリと.pycファイルとは?

今回は__pycache__ディレクトリと.pycファイルについてご説明致します。
ネットで拾った情報+私の経験によって語るので多少の誤りがあるかもしれません。



__pycache__ディレクトリと.pycファイルとは?

Pythonを実行すると自動的に__pycache__ディレクトリとその配下に.pycファイルができることがありますよね?
Python3から__pycache__ディレクトリと.pycファイルができるようになったそうです。

先に__pycache__ディレクトリについて説明しますと、これらはPythonコードをコンパイルした際にできるバイトコードを__pycache__ディレクトリに格納しているようです。
そのバイトコードが.pycファイルか.pyoファイルとして格納されるようですね。

この時、コンパイルしたファイルをもじって.pycファイルが作成されます。
例えば「__init__.py」をコンパイルすると、__pycache__ディレクトリに「__init__.cpython-37.pyc」が作成されます。(実行したPythonのバージョンは3.7です)

大抵の場合はこれらの__pycache__ディレクトリと.pycファイルは無視して問題ないそうです。
しかし__pycache__ディレクトリと.pycファイルがあることによって、プログラムの実行速度が少しだけ速くなるそうです。

また、プログラムを変えたり消したり追加してもう一度実行することで__pycache__ディレクトリと.pycファイルが上書きされます。
基本的にただのキャッシュなので無視して構わないらしいです。

__pycache__ディレクトリと.pycファイルを作成しないようにするためには?

コンパイル時に__pycache__ディレクトリと.pycファイルを意図的に作成しないようにするためには次の二つの方法があります。
・スクリプトを実行する際にオプションを指定する
・環境変数にPYTHONDONTWRITEBYTECODEを設定

スクリプトを実行する際にオプションを指定する

Pythonスクリプトの実行時に-Bオプションを指定することで__pycache__ディレクトリと.pycファイルが作成されないようにすることができます。

例:
python -B test.py

環境変数にPYTHONDONTWRITEBYTECODEを設定

環境変数にPYTHONDONTWRITEBYTECODEを設定することで__pycache__ディレクトリと.pycファイルが作成されないようにすることができます。
値は空白以外のString型ならなんでも良いらしいです。

例:
export PYTHONDONTWRITEBYTECODE=1

終わりに

今回は__pycache__ディレクトリと.pycファイルについて説明いたしました。

この記事が理解の助けになれば幸いです。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いいたします。
コメントもお待ちしております。






Python

Posted by ちこ