诗歌是否忽略了额外内容或 pyproject.toml 配置错误? [复制]

2024-03-27

我有一个由诗歌创建的新项目 yolo 。

我做了以下步骤:

poetry new
poetry add requests
poetry add -D pytz
poetry add -D --optional --extras=dev ipdb
poetry lock

我的 toml 文件如下所示:

[tool.poetry]
name = "yolo"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected] /cdn-cgi/l/email-protection>"]

[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.24.0"

[tool.poetry.dev-dependencies]
pytest = "^5.2"
pytz = "^2020.1"
ipdb = {version = "^0.13.3", optional = true, extras = ["dev"]}

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

我删除了环境:

$ poetry env list
yolo-_0wi_Pw3-py3.6 (Activated)
$ poetry env remove yolo-_0wi_Pw3-py3.6
Deleted virtualenv: .cache/pypoetry/virtualenvs/yolo-_0wi_Pw3-py3.6

现在如果我尝试这样做:

$ poetry install
Creating virtualenv yolo-_0wi_Pw3-py3.6 in .cache/pypoetry/virtualenvs
Installing dependencies from lock file

Package operations: 17 installs, 0 updates, 0 removals

  - Installing six (1.15.0)
  - Installing wcwidth (0.2.5)
  - Installing zipp (3.2.0)
  - Installing importlib-metadata (2.0.0)
  - Installing pyparsing (2.4.7)
  - Installing attrs (20.2.0)
  - Installing certifi (2020.6.20)
  - Installing chardet (3.0.4)
  - Installing idna (2.10)
  - Installing more-itertools (8.5.0)
  - Installing packaging (20.4)
  - Installing pluggy (0.13.1)
  - Installing py (1.9.0)
  - Installing urllib3 (1.25.10)
  - Installing pytest (5.4.3)
  - Installing pytz (2020.1)
  - Installing requests (2.24.0)
  - Installing yolo (0.1.0)

正如预期的那样,没有 ipdb。

但如果我尝试:

$ poetry install --extras='dev'
Installing dependencies from lock file

[ValueError]
Extra [dev] is not specified.

为了澄清和解释更多。

我的问题中生成的 Toml 文件是诗歌的自动作品,有一个修复需要手动干预。

[tool.poetry]
name = "yolo"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected] /cdn-cgi/l/email-protection>"]

[tool.poetry.dependencies]
python = "^3.6"
requests = "^2.24.0"

[tool.poetry.dev-dependencies]
pytest = "^5.2"
pytz = "^2020.1"
ipdb = {version = "^0.13.3", optional = true, extras = ["dev"]}

[tool.poetry.extras]
dev = ["ipdb"]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

不用说,这真是令人困惑。

但从现在开始,如果我们这样做:

$ poetry install -E dev

它将按预期工作并且将安装 ipdb。


我和我的朋友花了一些时间弄清楚发生了什么事。

当你这样做时:

poetry install --extra=dev ipdb

事实上发生的情况是,您指定您希望 ipdb 应该使用 ipdb 可能使用也可能不使用的额外“dev”。

因此在 toml 中它将被声明为:

[tool.poetry.dev-dependencies]
    ipdb = {version = "^0.13.3", extras = ["dev"]}

事实上我想要实现的是指定 yolo 项目存在额外的内容,它称为 dev 并包括安装 ipdb。这是通过向诗歌添加新部分来实现的:

[tool.poetry.extras]
    dev = ["ipdb"]

令人困惑的因素是两者都使用关键字 extra,而上下文却完全不同。作为依赖定义的一部分,主包 extra 的风格也与 extra 不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

诗歌是否忽略了额外内容或 pyproject.toml 配置错误? [复制] 的相关文章

随机推荐