"compileall" — Python ライブラリをバイトコンパイル
**************************************************

**ソースコード:** Lib/compileall.py

======================================================================

このモジュールは、Python ライブラリのインストールを助けるユーティリテ
ィ関数群を提供します。この関数群は、ディレクトリツリー内の Python ソー
スファイルをコンパイルします。このモジュールを使って、キャッシュされた
バイトコードファイルをライブラリのインストール時に生成することで、ライ
ブラリディレクトリに書き込み権限をもたないユーザでも、これらを利用でき
るようになります。


コマンドラインでの使用
======================

このモジュールは、 (**python -m compileall** を使って) Python ソースを
コンパイルするスクリプトとして機能します。

directory ...
file ...

   位置引数は、コンパイルするファイル群か、再帰的に横断されるディレク
   トリでソースファイル群を含むものです。引数が与えられなければ、"-l
   <directories from sys.path>" を渡したのと同じように動作します。

-l

   サブディレクトリを再帰処理せず、指名または暗示されたディレクトリ群
   に含まれるソースコードファイル群だけをコンパイルします。

-f

   タイムスタンプが最新であってもリビルドを強制します。

-q

   Do not print the list of files compiled, print only error messages.

-d destdir

   コンパイルされるそれぞれのファイルへのパスの先頭に、ディレクトリを
   追加します。これはコンパイル時トレースバックに使われ、バイトコード
   ファイルが実行される時点でソースファイルが存在しない場合に、トレー
   スバックやその他のメッセージに使われるバイトコードファイルにもコン
   パイルされます。

-x regex

   regex を使って、コンパイル候補のそれぞれのファイルのフルパスを検索
   し、regex がマッチしたファイルを除外します。

-i list

   ファイル "list" を読み込み、そのファイルのそれぞれの行を、コンパイ
   ルするファイルとディレクトリのリストに加えます。"list" が "-" なら
   、"stdin" の行を読み込みます。

バージョン 2.7 で変更: Added the "-i"  option.


パブリックな関数
================

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

   Recursively descend the directory tree named by *dir*, compiling
   all ".py" files along the way.

   *maxlevels* 引数で最大再帰深度を制限します。デフォルトは "10" です
   。

   *ddir* が与えられた場合、コンパイルされるそれぞれのファイルへのパス
   の先頭に、そのディレクトリを追加します。これはコンパイル時トレース
   バックに使われ、バイトコードファイルが実行される時点でソースファイ
   ルが存在しない場合に、トレースバックやその他のメッセージに使われる
   バイトコードファイルにもコンパイルされます。

   *force* が真の場合、タイムスタンプが最新のであってもモジュールは再
   コンパイルされます。

   *rx* が与えられた場合、コンパイル候補のそれぞれのファイルのフルパス
   に対して検索メソッドが呼び出され、それが真値を返したら、そのファイ
   ルは除外されます。

   If *quiet* is true, nothing is printed to the standard output
   unless errors occur.

compileall.compile_file(fullname[, ddir[, force[, rx[, quiet]]]])

   Compile the file with path *fullname*.

   *ddir* が与えられた場合、コンパイルされるファイルのパスの先頭にその
   ディレクトリを追加します。これはコンパイル時トレースバックに使われ
   、バイトコードファイルが実行される時点でソースファイルが存在しない
   場合に、トレースバックやその他のメッセージに使われるバイトコードフ
   ァイルにもコンパイルされます。

   *rx* が与えられた場合、コンパイル候補のファイルのフルパスに対して検
   索メソッドが呼び出され、それが真値を返したら、ファイルはコンパイル
   されず、"True" が返されます。

   If *quiet* is true, nothing is printed to the standard output
   unless errors occur.

   バージョン 2.7 で追加.

compileall.compile_path([skip_curdir[, maxlevels[, force]]])

   Byte-compile all the ".py" files found along "sys.path". If
   *skip_curdir* is true (the default), the current directory is not
   included in the search.  All other parameters are passed to the
   "compile_dir()" function.  Note that unlike the other compile
   functions, "maxlevels" defaults to "0".

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

   import compileall

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

   # Perform same compilation, excluding files in .svn directories.
   import re
   compileall.compile_dir('Lib/', rx=re.compile(r'[/\\][.]svn'), force=True)

参考:

  Module "py_compile"
     一つのソースファイルをバイトコンパイルします。
