arn*_*rne 11 python setup.py pyproject.toml
我目前正在尝试将我们的内部项目从setup.py
( pyproject.toml
PEP -518 ) 移走。如果可能的话,我不想使用构建后端特定的配置,即使我确实[build-system]
通过require
“ing”在该部分中指定了后端。
这些pyproject.toml
文件或多或少是setup.py
文件的直接翻译,元数据根据PEP-621设置,包括dependencies
. 我们用于setuptools_scm
确定版本,因此该version
字段最终位于该dynamic
部分中。
我们曾经在文件中设置packages
参数,但我在 中找不到任何相应的字段,所以我干脆省略了它。setup
setup.py
pyproject.toml
当使用 构建项目时python3 -m build .
,我最终得到一个名为 的包UNKNOWN
,即使我name
在[project]
部分中设置了字段。看来这在构建的早期就中断了:
$ 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
....
Run Code Online (Sandbox Code Playgroud)
我正在使用 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
Run Code Online (Sandbox Code Playgroud)
我的(缩写)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]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
将@AKX 的评论转化为答案,以便其他人可以更轻松地找到它。
问题可能是系统上过时的 pip/setuptools。显然,我的系统上的版本 19.3.1 无法安装可以正确处理 PEP621 元数据的 setuptools 版本。
您不能使用该指令从 pyproject.toml 中要求新的 pip build-system.requires
。
如果您无法更新系统 pip,您始终可以按用户安装:
pip install --user pip
Run Code Online (Sandbox Code Playgroud)
现在就可以走了。
归档时间: |
|
查看次数: |
10278 次 |
最近记录: |