編集可能インストール¶
編集可能インストールは、パッケージ開発を容易にするように設計されたPythonパッケージのインストールモードです。パッケージが編集可能モードでインストールされている場合、プロジェクトのソースコードへの編集は、新しいインストール手順なしで有効になります。編集可能インストールは、形式化されたビルドバックエンドに依存しないものであり、setuptoolsによって導入された開発モードの形式化です。
ほとんどのPythonビルドバックエンドは、開発モードまたは編集可能インストールを純粋なPythonコンポーネントに適用しますが、meson-python
は編集可能インストールを、拡張モジュールなどコンパイル手順を必要とするパッケージコンポーネントにまで拡張します。
パッケージを編集可能モードでインストールするには、pip install
に--editable
または-e
オプションを渡します。編集可能インストールモードは、インストールされているプロジェクトのソースコードがローカルディレクトリで使用可能であることを意味します。現在のディレクトリにあるプロジェクトを編集可能モードでインストールするには、開発環境にプロジェクトのビルド依存関係をインストールし、次を実行します。
$ python -m pip install --no-build-isolation --editable .
これにより、ソースおよびビルドディレクトリからパッケージコンテンツをロードするスタブがPythonのサイトパッケージディレクトリにインストールされます。同じスタブは、特定のPythonインタプリタインスタンスでパッケージが最初にインポートされたときに、パッケージのコンパイルされた部分を再構築する役割も担います。Mesonとninja
によって許可される非常に高速な部分的な再構築により、再構築はインポート時間にほとんど影響を与えません。
エントリポイントの追加や変更、または新しい依存関係の追加、および一般的にパッケージメタデータを含むすべての変更など、一部の種類の変更は、有効にするために新しいインストール手順が必要であることに注意してください。
編集可能インストールは、少なくとも通常のインストールで利用できるすべてのファイルを公開します。ただし、プロジェクト内のファイルとディレクトリの編成によっては、通常は利用できないファイルも公開する場合があります。
ビルド依存関係¶
編集可能モードでインストールされたパッケージはインポート時に再構築されるため、すべてのビルド依存関係は、開発環境で実行時に利用できる必要があります。
デフォルトでは、pipはビルド依存関係がユーザー環境に影響を与えずにインストールされる隔離された環境でパッケージをビルドします。ビルド分離を使用して編集可能モードでインストールされたパッケージは、ビルド依存関係も開発環境にインストールされていない限り、インポート時に再構築に失敗します。さらに、ビルド分離を使用してビルドする場合、ビルド依存関係によって提供されるヘッダーまたはその他のリソースに依存するパッケージは、隔離されたビルド環境でこれらのパスを解決します。隔離されたビルド環境はビルド完了後に削除されるため、インポート時にパッケージが再構築される際に失敗が発生します。これらの理由から、パッケージを編集可能モードでインストールする場合は、pipに--no-build-isolation
引数を渡してビルド分離を無効にすることをお勧めします。
執筆時点では、pipはパッケージのビルド依存関係をインストールするコマンドを提供していません。ビルド依存関係の要件は、インストールするパッケージのpyproject.toml
を検査することで取得できます。これには、少なくともmeson-python
Pythonパッケージ、およびmeson
およびninja
Pythonパッケージが含まれます。それぞれのコマンドがシステムによって提供されていない場合、または必要なバージョンではない場合。
$ python -m pip install meson-python meson ninja
ビルドディレクトリ¶
パッケージのコンパイルされたコンポーネントはビルドディレクトリから直接ロードされるため、ビルドディレクトリは実行時にソースディレクトリとともに利用できる必要があります。
編集可能モードでパッケージをビルドする場合、meson-python
は、パッケージがビルドされるインタープリターに関連付けられたwheel ABIタグとして名前が付けられたビルドディレクトリを使用します。ビルドディレクトリは、ソースツリー内のbuild
という名前のディレクトリに配置されます。たとえば、CPython 3.11の編集可能インストールは、build/cp311/
ビルドディレクトリに関連付けられます。このディレクトリ構造により、異なるABIを持つ複数のインタープリターに対して同じプロジェクトを編集可能モードでインストールできます。
代替のビルドディレクトリは、build-dir
構成設定を使用して指定できます。
詳細モード¶
編集可能インストールは主にパッケージ開発の補助であるため、コンパイルログを検査できると便利な場合があります。MESONPY_EDITABLE_VERBOSE
環境変数を設定すると、パッケージがインポート時に再構築されるときにビルドプロセスの出力が生成されます。この詳細モードをパッケージで永続的に有効にするには、パッケージをインストールするときにeditable-verbose
構成設定をnull以外の値に設定できます
$ python -m pip install --no-build-isolation --config-settings=editable-verbose=true --editable .