如何在pyproject.toml的可编辑模式下使用pip安装包?



当项目通过pyproject.toml(即没有setup.{py,cfg}文件)指定时,如何通过pip(即python -m pip install -e .)以可编辑模式安装?

我尝试了setuptoolspoetry的构建系统,但都没有工作:

[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环境中使用这个,以下是我的setuptoolspip版本:

$ conda list | grep setuptools
setuptools                58.3.0                   pypi_0    pypi
$ python -m pip --version
pip 21.3.1

PEP 660 -可编辑安装为pyproject。基于toml的构建定义了如何构建只使用pyproject.toml的项目。构建工具必须实现PEP 660才能使可编辑安装工作。您需要一个前端(例如pip≥21.3)和一个后端。一些流行的后端状态如下:

  • Setuptools实现PEP 660作为64版本。
  • Flit从3.4版开始实现PEP 660。
  • Poetry在1.0.8版本中实现了PEP 660。

注意:为了能够在用户站点(pip install -e --user)上进行可编辑安装,您需要一个系统安装了setuptoolsv62.0.0或更新版本。

我在这里绊倒了,因为我搜索错误字符串"(A "pyproject.toml" file was found, but editable mode currently requires a setuptools-based build.)">

在我的例子中,我所需要做的就是更新pip:

python3 -m pip install --upgrade pip

安装工作正常

备注:不再需要此解决方案。自v64.0.0(2022年8月)以来,Setuptools支持可编辑安装。

作为setuptools实现PEP 660(#2816)之前的临时解决方案,您可以创建一个空的安装文件,仅用于可编辑的安装。

touch setup.cfg
pip install -e .
rm setup.cfg

注意:这实际上并没有调用任何build_editable钩子(目前setuptools的后端甚至不存在),而是在pip中触发一个代码路径,创建一个临时的setup.py,然后执行setup.py develop。所以这是一个"遗产"可编辑安装,通过在路径配置文件(如.venv/lib/python3.XY/site-packages/easy-install.pth)中放置指向源代码的链接来完成。Poetry和flit做类似的事情,除了它们在站点目录中创建单独的路径文件,如mypkg.pth,而不是使用easy-install.pth中的行。

因为setup.py develop是一个路径文件破解,所以这种开发安装的通常警告适用,例如,它会公开源目录中碰巧存在的任何.py文件,即使它们在创建发行版时实际上没有打包到真正的发行版中。

截至诗歌1.2.0b3, "当前项目";在运行poetry install时,默认自动以可编辑模式安装。

$ pip uninstall virtualenv # or via apt if you installed that way
$ sudo apt install python3-dev python3-pip python3-setuptools
$ wget install.python-poetry.org -o get-poetry.py
$ python3 get-poetry.py --preview
$ cd /you/project/folder
$ poetry install
$ pip list
Package            Version  Editable project location
------------------ -------- -------------------------------------------
...
your-project       0.1.0    /you/project/folder
pip                22.2.2
...

找到一个很好的资源:

https://setuptools.pypa.io/en/latest/userguide/quickstart.html开发模式

pip install --editable .

相关内容

  • 没有找到相关文章

最新更新