コンテンツにスキップ

[Python]compileallのメモ

Python のソースを事前にバイトコードへコンパイルするcompileallの使い方を紹介します。コマンドの実行例と、pex などで利用されている例を示します。

概要

compileallとは

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

使い方

python -m compileall <dir>

<dir>配下の Python スクリプトをコンパイルし、__pycache__ディレクトリにバイトコード(.pyc)を生成します。

利用例

compileallを実際に利用している OSS の例として、pex と maelstrom を紹介します。

pex ファイルの作成

pex は Python のパッケージングツールで、Python のスクリプトを 1 つのファイルにまとめられます。 pex repo 内で検索すると、compileallが使われている例が見つかります。

maelstrom

maelstromは Python と Rust プロジェクトのためのテストランナーで、Python の依存を取り扱うためにcompileallを使っています。使用箇所はmaelstrom-pytest の該当コードで確認できます。