我目前正在尝试将我们的内部项目从setup.py转移到pyproject.toml (佩普-518)。如果可能的话,我不想使用特定于构建后端的配置,即使我确实在[build-system]部分中通过使用require来指定后端。
pyproject.toml文件或多或少是setup.py文件的直接前向翻译,元数据根据佩普-621设置,包括dependencies。我们使用setuptools_scm来确定版本,因此version字段在dynamic部分结束。
我们过去常常在我们的packages文件中将setup参数设置为setup,但是在pyproject.toml中找不到相应的字段,所以我忽略了它。
当使用python3 -m build .构建项目时,我最终得到一个名为UNKNOWN的包,尽管在[project]部分设置了name字段。这似乎在构建过程中很早就中断了:
$ python -m build .
* Creating virtualenv isolated environment...
* Installing packages in isolated environment... (setuptools, setuptools_scm[toml]>=6.2, wheel)
* Getting dependencies for sdist...
running egg_info
writing UNKNOWN.egg-info/PKG-INFO
....我使用python 3.8.11和以下软件包:
build==0.8.0
distlib==0.3.4
filelock==3.4.1
packaging==21.3
pep517==0.12.0
pip==22.0.4
platformdirs==2.4.0
pyparsing==3.0.9
setuptools==62.1.0
six==1.16.0
tomli==1.2.3
virtualenv==20.14.1
wheel==0.37.1我的(缩写) pyproject.toml如下所示:
[project]
name = "coolproject"
dependencies = [
'pyyaml==5.3',
'anytree==2.8.0',
'pytest'
]
dynamic = [
"version"
]
[build-system]
requires = ["setuptools", "wheel", "setuptools_scm[toml]>=6.2"]
[tool.setuptools_scm]有什么想法吗?
发布于 2022-08-26 07:26:48
把@AKX的评论变成一个答案,这样其他人就能更容易地找到它。
问题可能是系统上过时的pip/setuptools。显然,我的系统上的19.3.1版本无法安装能够正确处理PEP621元数据的setuptools版本。
您不能使用pyproject.toml指令从build-system.requires内部要求一个新的pip。
如果无法更新系统pip,则始终可以按每个用户安装:
pip install --user pip你可以走了。
发布于 2022-08-25 18:30:44
在Debian/Ubuntu上,如果安装了较旧的setuptools系统版本,就可以创建“未知”包。
解决办法:
sudo apt purge python3-setuptoolshttps://stackoverflow.com/questions/72352801
复制相似问题