# 32.10. `py_compile` --- Python ソースファイルのコンパイル

ソースコード: Lib/py_compile.py

`py_compile` モジュールには、ソースファイルからバイトコードファイルを作る関数と、モジュールのソースファイルがスクリプトとして呼び出される時に使用される関数が定義されています。

頻繁に必要となるわけではありませんが、共有ライブラリとしてモジュールをインストールする場合や、特にソースコードのあるディレクトリにバイトコードのキャッシュファイルを書き込む権限がないユーザがいるときには、この関数は役に立ちます。

exception `py_compile.``PyCompileError`

  ファイルをコンパイル中にエラーが発生すると送出される例外。

`py_compile.``compile`(file[, cfile[, dfile[, doraise]]])

  ソースファイルをバイトコードにコンパイルして、バイトコードのキャッシュファイルに書き出します。 ソースコードは file という名前のファイルから読み込みます。 バイトコードはファイル cfile に書き込まれ、デフォルトでは file `+` `'c'` (使用しているインタープリタで最適化が可能なら `'o'`) です。 もし dfile が指定されたら、 file の代わりにソースファイルの名前としてエラーメッセージの中で使われます。 doraise が真の場合、コンパイル中にエラーが発生すると `PyCompileError` を送出します。 doraise が偽の場合(デフォルト)はエラーメッセージは `sys.stderr` に出力されますが、例外は送出しません。

`py_compile.``main`([args])

  いくつか複数のソースファイルをコンパイルします。 args で (あるいは args で指定されなかったらコマンドラインで) 指定されたファイルをコンパイルし、できたバイトコードを通常の方法で保存します。 この関数はソースファイルの存在するディレクトリを検索しません。 指定されたファイルをコンパイルするだけです。 args が `'-'` 1つだけだった場合、ファイルのリストは標準入力から取られます。

  バージョン 2.7 で変更: `'-'` のサポートが追加されました。

このモジュールがスクリプトとして実行されると、 `main()` がコマンドラインで指定されたファイルを全てコンパイルします。一つでもコンパイルできないファイルがあると終了ステータスが 0 でない値になります。

バージョン 2.6 で変更: モジュールがスクリプトとして実行された場合の 0 でない終了ステータスが追加されました。

参考

`compileall` モジュール
  ディレクトリツリー内の Python ソースファイルを全てコンパイルするライブラリ。