[Python]compileallのメモ¶
Python のソースを事前にバイトコードへコンパイルするcompileallの使い方を紹介します。コマンドの実行例と、pex などで利用されている例を示します。
概要¶
このモジュールは、Python ライブラリのインストールを助けるユーティリティ関数群を提供します。この関数群は、ディレクトリツリー内の Python ソースファイルをコンパイルします。このモジュールを使って、キャッシュされたバイトコードファイルをライブラリのインストール時に生成することで、ライブラリディレクトリに書き込み権限をもたないユーザでも、これらを利用できるようになります。
使い方¶
<dir>配下の Python スクリプトをコンパイルし、__pycache__ディレクトリにバイトコード(.pyc)を生成します。
利用例¶
compileallを実際に利用している OSS の例として、pex と maelstrom を紹介します。
pex ファイルの作成¶
pex は Python のパッケージングツールで、Python のスクリプトを 1 つのファイルにまとめられます。 pex repo 内で検索すると、compileallが使われている例が見つかります。
maelstrom¶
maelstromは Python と Rust プロジェクトのためのテストランナーで、Python の依存を取り扱うためにcompileallを使っています。使用箇所はmaelstrom-pytest の該当コードで確認できます。