所以我正在开发一个包,我做了一些构建,但突然改变了一些东西,它不再构建了,无论是在我的机器上还是在 azure devops 上。它似乎在构建过程中没有安装依赖项,因为它在最顶层的导入时失败(可以告诉表单更改导入顺序)。 使用 python 构建 -m 构建 pyproject.toml 这是 pyproject.toml:
[build-system]
requires = ["setuptools>=61", "pyodbc"]
build-backend = "setuptools.build_meta"
[project]
name = "module"
description = "..."
authors = [
{ ... },
]
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
dependencies = [
'docx',
'click',
'click_spinner',
'dynaconf',
'pandas',
'pyarrow',
'pyodbc',
'sqlalchemy',
'docxtpl'
]
dynamic = ["version"]
[tool.setuptools]
packages = ["module"]
include-package-data = true
[tool.setuptools.package-data]
module = ["assets/*.jpg", "assets/*.csv", "assets/*.docx"]
[project.urls]
"Homepage" = "..."
[project.scripts]
module = "module.main:cli"
[tool.setuptools.dynamic]
version = { attr = "module.__version__" }
然后我收到此错误:
import click
ModuleNotFoundError: No module named 'click'
ERROR Backend subprocess exited when trying to invoke get_requires_for_build_sdist
在不同的平台上回答(man stackoverflow 已经完成了,疯狂......)
我认为错误消息具有误导性,问题出在 pyproject.toml 中的这一行:
[tool.setuptools.dynamic]
version = { attr = "module.__version__" }
就我而言,我在 version.py 中有 version 而不是 init.py 以避免循环导入,所以我需要像这样更改版本控制:
[tool.setuptools.dynamic]
version = { attr = "module.version.__version__" }
aa 就是这样!不知道为什么它在外部导入语句而不是在版本导入时中断。