py_compile — Pythonソースファイルのコンパイル—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/py compile
移動先:案内検索

py_compile —Pythonソースファイルをコンパイルします

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



py_compile モジュールは、ソースファイルからバイトコードファイルを生成する関数と、モジュールのソースファイルがスクリプトとして呼び出されるときに使用される別の関数を提供します。

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

exception py_compile.PyCompileError
ファイルのコンパイル中にエラーが発生すると例外が発生します。
py_compile.compile(file, cfile=None, dfile=None, doraise=False, optimize=- 1, invalidation_mode=PycInvalidationMode.TIMESTAMP, quiet=0)

ソースファイルをコンパイルしてバイトコードにし、バイトコードキャッシュファイルを書き出します。 ソースコードは、 file という名前のファイルからロードされます。 バイトコードは cfile に書き込まれ、デフォルトでは PEP 3147 / PEP 488 パスになります。 .pycで終わります。 たとえば、 file/foo/bar/baz.pyの場合、Python3.2では cfile はデフォルトで/foo/bar/__pycache__/baz.cpython-32.pycになります。 dfile が指定されている場合、 file の代わりに、エラーメッセージのソースファイルの名前として使用されます。 doraise がtrueの場合、ファイルのコンパイル中にエラーが発生すると、 PyCompileError が発生します。 doraise がfalse(デフォルト)の場合、エラー文字列がsys.stderrに書き込まれますが、例外は発生しません。 この関数は、バイトコンパイルされたファイルへのパスを返します。 cfile の値が使用されたものは何でも。

doraise および quiet 引数は、ファイルのコンパイル中にエラーがどのように処理されるかを決定します。 quick が0または1で、 doraise がfalseの場合、デフォルトの動作が有効になります。エラー文字列がsys.stderrに書き込まれ、関数はNonedoraise がtrueの場合、代わりに PyCompileError が発生します。 ただし、 quick が2の場合、メッセージは書き込まれず、 doraise は効果がありません。

cfile が(明示的に指定または計算された)パスになるパスがシンボリックリンクまたは非正規ファイルの場合、 FileExistsError が発生します。 これは、バイトコンパイルされたファイルをそれらのパスに書き込むことが許可されている場合、インポートがそれらのパスを通常のファイルに変換するという警告として機能します。 これは、ファイルの名前変更を使用してインポートすることの副作用であり、ファイルの同時書き込みの問題を防ぐために、最終的なバイトコンパイル済みファイルを所定の位置に配置します。

optimize は最適化レベルを制御し、組み込みの compile()関数に渡されます。 デフォルトの-1は、現在のインタープリターの最適化レベルを選択します。

invalidation_modePycInvalidationMode 列挙型のメンバーである必要があり、生成されたバイトコードキャッシュを実行時に無効にする方法を制御します。 SOURCE_DATE_EPOCH環境変数が設定されている場合、デフォルトは PycInvalidationMode.CHECKED_HASH です。それ以外の場合、デフォルトは PycInvalidationMode.TIMESTAMP です。

バージョン3.2で変更: cfile のデフォルト値を PEP 3147 準拠に変更しました。 以前のデフォルトはファイル + 'c'(最適化が有効になっている場合は'o')でした。 optimize パラメーターも追加されました。

バージョン3.4で変更:バイトコードキャッシュファイルの書き込みに importlib を使用するようにコードを変更しました。 これは、ファイルの作成/書き込みのセマンティクスが importlib の機能と一致することを意味します。 権限、書き込みと移動のセマンティクスなど。 また、 cfile がシンボリックリンクまたは非正規ファイルの場合、 FileExistsError が発生するという警告を追加しました。

バージョン3.7で変更: invalidation_mode パラメーターは、 PEP 552 で指定されているように追加されました。 SOURCE_DATE_EPOCH環境変数が設定されている場合、 invalidation_modePycInvalidationMode.CHECKED_HASH に強制されます。

バージョン3.7.2で変更: SOURCE_DATE_EPOCH環境変数は、 invalidation_mode 引数の値をオーバーライドしなくなり、代わりにデフォルト値を決定します。

バージョン3.8で変更: クワイエットパラメーターが追加されました。

class py_compile.PycInvalidationMode

インタプリタがバイトコードファイルがソースファイルで最新であるかどうかを判断するために使用できる可能なメソッドの列挙。 .pycファイルは、ヘッダーに目的の無効化モードを示します。 Pythonが実行時に.pycファイルを無効にする方法の詳細については、キャッシュされたバイトコードの無効化を参照してください。

バージョン3.7の新機能。

TIMESTAMP

.pycファイルには、ソースファイルのタイムスタンプとサイズが含まれています。Pythonは実行時にソースファイルのメタデータと比較して、.pycファイルを再生成する必要があるかどうかを判断します。

CHECKED_HASH

.pycファイルには、ソースファイルの内容のハッシュが含まれています。Pythonは実行時にソースと比較して、.pycファイルを再生成する必要があるかどうかを判断します。

UNCHECKED_HASH

CHECKED_HASH と同様に、.pycファイルにはソースファイルの内容のハッシュが含まれています。 ただし、Pythonは実行時に、.pycファイルが最新であると想定し、ソースファイルに対して.pycをまったく検証しません。

このオプションは、ビルドシステムなどのPython外部のシステムによって.pycsが最新の状態に保たれている場合に役立ちます。

py_compile.main(args=None)

いくつかのソースファイルをコンパイルします。 args (または、 argsNoneの場合はコマンドライン)で指定されたファイルがコンパイルされ、結果のバイトコードが通常の方法でキャッシュされます。 この関数は、ソースファイルを見つけるためにディレクトリ構造を検索しません。 明示的に指定されたファイルのみをコンパイルします。 '-'がargsの唯一のパラメーターである場合、ファイルのリストは標準入力から取得されます。

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

このモジュールをスクリプトとして実行すると、 main()を使用して、コマンドラインで指定されたすべてのファイルがコンパイルされます。 ファイルの1つをコンパイルできなかった場合、終了ステータスはゼロ以外です。

も参照してください

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