python - 如果poetry.lock 包含两次相同的包是什么意思?
问题描述
我刚刚发现poetry update
生成的package.lock
文件包含该块
[[package]]
name = "black"
version = "21.8b0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6.2"
[package.dependencies]
click = ">=7.1.2"
mypy-extensions = ">=0.4.3"
pathspec = ">=0.9.0,<1"
platformdirs = ">=2"
regex = ">=2020.1.8"
tomli = ">=0.2.6,<2.0.0"
typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
d = ["aiohttp (>=3.6.0)", "aiohttp-cors (>=0.4.0)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
python2 = ["typed-ast (>=1.4.2)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "black"
version = "21.9b0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6.2"
[package.dependencies]
click = ">=7.1.2"
mypy-extensions = ">=0.4.3"
pathspec = ">=0.9.0,<1"
platformdirs = ">=2"
regex = ">=2020.1.8"
tomli = ">=0.2.6,<2.0.0"
typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
d = ["aiohttp (>=3.6.0)", "aiohttp-cors (>=0.4.0)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
python2 = ["typed-ast (>=1.4.2)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "black"
version = "21.10b0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6.2"
[package.dependencies]
click = ">=7.1.2"
mypy-extensions = ">=0.4.3"
pathspec = ">=0.9.0,<1"
platformdirs = ">=2"
regex = ">=2020.1.8"
tomli = ">=0.2.6,<2.0.0"
typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
d = ["aiohttp (>=3.7.4)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
python2 = ["typed-ast (>=1.4.3)"]
uvloop = ["uvloop (>=0.15.2)"]
如您所见,有 black21.8b0
和 black21.9b0
和 black 21.10b0
。这意味着什么?将安装哪个版本?
解决方案
这看起来像是要考虑的中间选项池的转储,称为诗歌中的事务(例如,具有取决于不同平台标记的版本的包)。默认情况下,可以根据“最新”规则做出决定。
我可以重现这种行为
[tool.poetry.dependencies]
python = "~3.8"
numpy = [
{version="1.18.*",markers="python_version=='3.8.*'"},
{version="1.21.*",markers="python_version=='3.9.*'"},
]
并poetry install --dry-run -vv
在锁定文件中生成两个版本。
你用什么诗?我认为该文件在最近的版本中得到了清理,仅表明最终选择。
推荐阅读
- animation - 将文本作为类型朗读
- ios - FFmpeg iOS 从 AVFrame 获取 UIImage
- mysql - 如何使用 MySQL 在 Windows 中设置 Master-Master 复制
- ios - Swift/IOS:SCNNode 在 SCNAction 完成后似乎回到了原来的位置,但它的实际位置被 SCNAction 改变了
- python - Numpy将函数应用于数组
- machine-learning - 如何使 KMeans 预测更准确?
- unity3d - 为移动设备优化球形遮罩着色器
- python - Python + web scraping + scrapy:如何从 IMDb 页面获取所有电影的链接?
- python - 将数据传递给 refresh_view_attrs。Python。基维
- elasticsearch - 默认索引的 Elasticsearch NEST 文档计数