可编辑安装¶
可编辑安装是一种 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 包,以及meson
和ninja
Python 包(如果系统未提供相应的命令,或者如果它们不是所需版本)
$ python -m pip install meson-python meson ninja
构建目录¶
由于包的已编译组件直接从构建目录加载,因此构建目录需要在执行时与源目录一起可用。
在以可编辑模式构建包时,meson-python
使用与正在为其构建包的解释器关联的轮子 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 .