可編輯安裝

可編輯安裝是一種 Python 套件安裝模式,旨在促進套件開發。當套件以可編輯模式安裝時,對專案原始碼的編輯將生效,而無需新的安裝步驟。可編輯安裝是 正式化setuptools 引入的開發模式,且與建置後端無關。

雖然大多數 Python 建置後端將開發模式或可編輯安裝應用於純 Python 組件,meson-python 將可編輯安裝擴展到需要編譯步驟的套件組件,例如擴充模組。

要以可編輯模式安裝套件,請將 --editable-e 選項傳遞給 pip install。可編輯安裝模式表示要安裝的專案原始碼可在本機目錄中使用。要以可編輯模式安裝目前目錄中的專案,請在您的開發環境中安裝專案的建置依賴項並執行

$ python -m pip install --no-build-isolation --editable .

這將在 Python 站點套件目錄中安裝一個存根,該存根從來源和建置目錄載入套件內容。相同的存根負責在給定的 Python 直譯器實例中首次導入套件時重建套件的編譯部分。由於 Meson 和 ninja 允許非常快速的部分重建,因此重建對導入時間的影響幾乎可以忽略不計。

請注意,某些類型的變更(例如新增或修改 進入點),或新增新的依賴項,以及通常所有涉及套件中繼資料的變更,都需要新的安裝步驟才能生效。

可編輯安裝至少會公開在常規安裝中可用的所有檔案。但是,根據專案中的檔案和目錄組織,它也可能公開通常不可用的檔案。

建置依賴項

由於以可編輯模式安裝的套件會在導入時重建,因此所有建置依賴項都需要在開發環境中執行時可用。

預設情況下,pip 會在隔離環境中建置套件,其中安裝建置依賴項而不會影響使用者環境。除非建置依賴項也安裝在開發環境中,否則使用建置隔離安裝的可編輯模式套件將無法在導入時重建。此外,當使用建置隔離進行建置時,依賴於其建置依賴項提供的標頭或其他資源的套件會在隔離的建置環境中解析這些路徑。隔離的建置環境會在建置完成後刪除,導致在導入時重建套件時失敗。由於這些原因,當以可編輯模式安裝套件時,建議禁用建置隔離,並將 --no-build-isolation 引數傳遞給 pip。

在撰寫本文時,pip 沒有提供安裝套件建置依賴項的命令。可以透過檢查要安裝的套件的 pyproject.toml 來取得建置依賴項需求。這些至少包括 meson-python Python 套件,以及 mesonninja 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 配置設定設定為非空值

$ python -m pip install --no-build-isolation --config-settings=editable-verbose=true --editable .