.pycファイルを作成させない方法メモ

Python に Bオプションを付けるか、環境変数 PYTHONDONTWRITEBYTECODE を作ると .pycファイルが作成されなくなる。

具体的には

python -B foo.py

のように実行するか、

:: Windows cmd の場合
set PYTHONDONTWRITEBYTECODE=1
foo.py

# Linux bash の場合
export PYTHONDONTWRITEBYTECODE=1
./foo.py

のように事前に環境変数を設定しておく。

そもそも .pyc ファイルとは?

Python で書かれたモジュールを import すると自動的に .pycファイルが作成される。

例えば

import bar

とやると bar.py と同じディレクトリに bar.pyc というファイルができる。

このファイルは bar.py をコンパイルして得られたバイトコードを保存したものだ。つまり一種のキャッシュである。モジュールは他のファイルからも import される可能性が高いので、こうしておけばコンパイルする時間を節約できる。

人によってはこの動作が邪魔という人もいる。例えば、普段は Python 2.7 を使っているのだが、一時的に 2.6 を使うといった場合だ。.pycファイルはバージョン間の互換性がないので、他のバージョンの Pythonスクリプトを実行するとキャッシュが上書きされてしまう。

Python 3.2 から新しい仕組みができた

Python 3.2 から .pycファイルは __pycache__ というディレクトリに、バージョン番号付きで保存されるようになったので、キャッシュが衝突したり、フォルダーがごちゃごちゃになったりすることはなくなった。