pyproject.toml 的依赖项中的字符串匹配

问题描述 投票:0回答:0

我正在尝试将对 python 项目的最新“开发版本”的依赖项添加到我的

pyproject.toml
.

这是我正在尝试的:

[project]
dependencies = [
  'some-package>=*.dev'
]

我可以使用与

pip install
完全相同的字符串,但由于某种原因它在这种情况下不起作用(它抱怨字符串格式不符合 pep508)。有人可以帮助我吗?

编辑1:

这是一个易于复制的玩具示例。

  1. python:3.10
    docker 镜像中,具有以下
    pyproject.toml
    依赖项:
...
dependencies = [
  'numpy ~= "*.post"',
]

numpy
仅作为示例。发布后版本相同) 2)这是我得到的:

root@4c2f2feb3dcc:/code# pip install -e .
Obtaining file:///code
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build editable did not run successfully.
  │ exit code: 1
  ╰─> [48 lines of output]
      configuration error: `project.dependencies[0]` must be pep508
      DESCRIPTION:
          Project dependency specification according to PEP 508
      
      GIVEN VALUE:
          "numpy ~= \"*.post\""
      
      OFFENDING RULE: 'format'
      
      DEFINITION:
          {
              "$id": "#/definitions/dependency",
              "title": "Dependency",
              "type": "string",
              "format": "pep508"
          }
...

所以,简而言之,我认为我在基本字符串匹配方面遇到了问题,因此很可能我做错了。

同时,如果尝试按照pep508中提供的语法测试,似乎是合规的。

编辑2:

我确实尝试进一步调试。我得到的错误信息如下:

...

File "/tmp/pip-build-env-3uwr9l70/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 51, in validate
      raise ValueError(f"{error}\n{summary}") from None

...

如果有人检查这个文件,这里是引发异常的地方:https://github.com/pypa/setuptools/blob/245d72a8aa4d47e1811425213aba2a06a0bb64fa/setuptools/config/_validate_pyproject/fastjsonschema_validations.py#L904

不过我没有时间进一步调试。当尝试使用 PEP508 中提供的解析脚本 + 语法时,依赖项被解析为

numpy ~= *.post -> ('numpy', [], [('~=', '*.post')], None)

所以,绝对是一个元组。版本被正确解析为

*.post
.

python setuptools pyproject.toml
© www.soinside.com 2019 - 2024. All rights reserved.