如何在 pyproject.toml 的可编辑模式下使用 pip 安装包?
How to install a package using pip in editable mode with pyproject.toml?
当一个项目通过pyproject.toml
指定仅时(即没有setup.{py,cfg}
文件),如何通过[=17以可编辑模式安装它=](即 python -m pip install -e .
)?
我为构建系统尝试了 setuptools
和 poetry
,但都没有用:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
我在两个构建系统上都遇到了同样的错误:
ERROR: Project file:///tmp/demo has a 'pyproject.toml' and its build backend is missing the 'build_editable' hook. Since it does not have a 'setup.py' nor a 'setup.cfg', it cannot be installed in editable mode. Consider using a build backend that supports PEP 660.
我在 conda
环境中使用它,以下是我的 setuptools
和 pip
版本:
$ conda list | grep setuptools
setuptools 58.3.0 pypi_0 pypi
$ python -m pip --version
pip 21.3.1
PEP 660 – Editable installs for pyproject.toml based builds defines how to build projects that only use pyproject.toml
. Build tools must implement PEP 660 for editable installs to work. You need a front-end (such as pip ≥ 21.3) 和后端。一些流行后端的状态是:
作为 setuptools 实施 PEP 660 (#2816) 之前的临时解决方法,您可以创建一个空的安装文件,仅用于可编辑安装。
touch setup.cfg
pip install -e .
rm setup.cfg
注意:这实际上并没有调用任何 build_editable
钩子(目前它甚至不存在于 setuptools 的后端),而是触发一个代码路径pip 创建一个临时 setup.py
然后执行 setup.py develop
。所以这是一个“遗留”可编辑安装,通过在 path configuration file 中向源代码添加 link 来完成,例如 .venv/lib/python3.XY/site-packages/easy-install.pth
。 Poetry 和 flit 的做法类似,除了它们在站点目录中创建单独的路径文件,如 mypkg.pth
,而不是使用 easy-install.pth
.
中的行
因为 setup.py develop
是路径文件 hack,所以适用此类开发安装的常见警告,例如它公开了任何碰巧出现在源目录中的 .py 文件,即使它们在创建发布时实际上并未打包到真实的分发版中。
当一个项目通过pyproject.toml
指定仅时(即没有setup.{py,cfg}
文件),如何通过[=17以可编辑模式安装它=](即 python -m pip install -e .
)?
我为构建系统尝试了 setuptools
和 poetry
,但都没有用:
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
我在两个构建系统上都遇到了同样的错误:
ERROR: Project file:///tmp/demo has a 'pyproject.toml' and its build backend is missing the 'build_editable' hook. Since it does not have a 'setup.py' nor a 'setup.cfg', it cannot be installed in editable mode. Consider using a build backend that supports PEP 660.
我在 conda
环境中使用它,以下是我的 setuptools
和 pip
版本:
$ conda list | grep setuptools
setuptools 58.3.0 pypi_0 pypi
$ python -m pip --version
pip 21.3.1
PEP 660 – Editable installs for pyproject.toml based builds defines how to build projects that only use pyproject.toml
. Build tools must implement PEP 660 for editable installs to work. You need a front-end (such as pip ≥ 21.3) 和后端。一些流行后端的状态是:
作为 setuptools 实施 PEP 660 (#2816) 之前的临时解决方法,您可以创建一个空的安装文件,仅用于可编辑安装。
touch setup.cfg
pip install -e .
rm setup.cfg
注意:这实际上并没有调用任何 build_editable
钩子(目前它甚至不存在于 setuptools 的后端),而是触发一个代码路径pip 创建一个临时 setup.py
然后执行 setup.py develop
。所以这是一个“遗留”可编辑安装,通过在 path configuration file 中向源代码添加 link 来完成,例如 .venv/lib/python3.XY/site-packages/easy-install.pth
。 Poetry 和 flit 的做法类似,除了它们在站点目录中创建单独的路径文件,如 mypkg.pth
,而不是使用 easy-install.pth
.
因为 setup.py develop
是路径文件 hack,所以适用此类开发安装的常见警告,例如它公开了任何碰巧出现在源目录中的 .py 文件,即使它们在创建发布时实际上并未打包到真实的分发版中。