このモジュールは、指定したディレクトリに含まれる Python ソースをコンパイルする関数を定義しています。 Python ライブラリをインストールする時、ソースファイルを事前にコンパイルしておく事により、ライブラリのインストール先ディレクトリに書き込み権限をもたないユーザでもキャッシュされたバイトコードファイルを利用する事ができるようになります。
このモジュールは Python ソースをコンパイルするスクリプトとして (Python の -m フラグを使って) も使えます。再帰的に辿るディレクトリ (再帰的な振る舞いは -l で止められます) はコマンドラインに並べます。引数無しで呼ばれると、その動作は -l sys.path を渡したのと同じです。コンパイルされたファイルのリストを出力する動作は -q フラグで無効にできます。さらに、 -x オプションは正規表現を引数に取り、その表現にマッチしたファイルを飛ばします。
dir で指定されたディレクトリを再帰的に下降し、見つかった .py を全てコンパイルします。 maxlevels は、下降する最大の深さ(デフォルトは 10 )を指定します。 ddir には、エラーメッセージで使用されるファイル名の、親ディレクトリ名を指定する事ができます。 force が真の場合、モジュールはファイルの更新日付に関わりなく再コンパイルされます。
rx には、検索対象から除外するファイル名の正規表現式を指定します。絶対パス名をこの正規表現で search し、一致した場合にはコンパイル対象から除外します。
quiet が真の場合、通常処理では標準出力に何も表示しません。
sys.path に含まれる、全ての .py ファイルをバイトコンパイルします。 skip_curdir が真(デフォルト)の時、カレントディレクトリは検索されません。 maxlevels と force はデフォルトでは 0 で、 compile_dir() に渡されます。
Lib/ ディレクトリ以下にある全ての .py ファイルを強制的にリコンパイルするには、以下のようにします:
import compileall
compileall.compile_dir('Lib/', force=True)
# .svn ディレクトリにあるファイルを除いて同じことをするにはこのようにします。
import re
compileall.compile_dir('Lib/', rx=re.compile('/[.]svn'), force=True)
参考