:mod:`compileall` --- Python ライブラリをバイトコンパイル
=========================================================

.. module:: compileall
   :synopsis: ディレクトリに含まれる Python ソースファイルを、一括してバイトコンパイルします。


このモジュールは、指定したディレクトリに含まれる Python ソースをコンパイルする関数を定義しています。
Python ライブラリをインストールする時、ソースファイルを事前にコンパイルしておく事により、ライブラリのインストール先ディレクトリに書き込み権限をもたないユーザでもキャッシュされたバイトコードファイルを利用する事ができるようになります。

このモジュールは Python ソースをコンパイルするスクリプトとして
(Python の :option:`-m` フラグを使って) も使えます。
再帰的に辿るディレクトリ (再帰的な振る舞いは :option:`-l` で止められます)
はコマンドラインに並べます。
引数無しで呼ばれると、その動作は ``-l sys.path`` を渡したのと同じです。
コンパイルされたファイルのリストを出力する動作は :option:`-q` フラグで無効にできます。
さらに、 :option:`-x` オプションは正規表現を引数に取り、その表現にマッチしたファイルを飛ばします。


.. function:: compile_dir(dir[, maxlevels[, ddir[, force[,  rx[, quiet]]]]])

   *dir* で指定されたディレクトリを再帰的に下降し、見つかった :file:`.py` を全てコンパイルします。
   *maxlevels* は、下降する最大の深さ（デフォルトは ``10`` ）を指定します。
   *ddir* には、エラーメッセージで使用されるファイル名の、親ディレクトリ名を指定する事ができます。
   *force* が真の場合、モジュールはファイルの更新日付に関わりなく再コンパイルされます。

   *rx* には、検索対象から除外するファイル名の正規表現式を指定します。絶対パス名をこの正規表現で ``search`` し、一致した場合にはコンパイル対象から除外します。

   *quiet* が真の場合、通常処理では標準出力に何も表示しません。


.. function:: compile_path([skip_curdir[, maxlevels[, force]]])

   ``sys.path`` に含まれる、全ての :file:`.py` ファイルをバイトコンパイルします。
   *skip_curdir* が真（デフォルト）の時、カレントディレクトリは検索されません。
   *maxlevels* と *force* はデフォルトでは ``0`` で、
   :func:`compile_dir` に渡されます。

:file:`Lib/` ディレクトリ以下にある全ての :file:`.py` ファイルを強制的にリコンパイルするには、以下のようにします::

   import compileall

   compileall.compile_dir('Lib/', force=True)

   # .svn ディレクトリにあるファイルを除いて同じことをするにはこのようにします。
   import re
   compileall.compile_dir('Lib/', rx=re.compile('/[.]svn'), force=True)


.. seealso::

   :mod:`py_compile` モジュール
      一つのファイルをバイトコンパイルします。

