gpt4 book ai didi

setuptools - 如何编写一个可以安装包的最小工作 pyproject.toml 文件?

转载 作者:行者123 更新时间:2023-12-03 15:29:26 73 4
gpt4 key购买 nike

Pip 支持 pyproject.toml文件,但到目前为止,新模式的所有实际使用都需要一个 3rd 方工具来自动生成这些文件(例如,诗歌和 pip)。不像 setup.py这已经是人类可写的,pyproject.toml不是(还)。
来自 setuptools docs ,

[build-system]
requires = [
"setuptools >= 40.9.0",
"wheel",
]
build-backend = "setuptools.build_meta"
但是,此文件不包含包依赖项(如 PEP 621 中所述)。 Pip 支持使用 pyproject.toml 安装软件包但在 pyproject.toml 中,pep 没有指定如何编写包依赖项。用于官方构建系统 setuptools .
我如何在 pyproject.toml 中编写包依赖项?

相关 StackOverflow 问题:
  • How to init the pyproject.toml file
    这个问题要求一种自动生成的方法 pyproject.toml ,我的问题不同,因为我要求人工编写 pyproject.toml .
  • 最佳答案

    PEP 621
    2020 年 12 月
    有一个标准叫PEP621指定项目的元数据(包括依赖项)应如何在 pyproject.toml 中布局。文件。
    2021 年 1 月
    pdm seems to have added support for the PEP 621 notation .
    2021 年 5 月
    更多构建后端添加了对 PEP 621 的支持,例如:

  • pdm
  • flit
  • trampolim
  • enscons
  • 可能更多...

  • my question differ because I ask for a human-written pyproject.toml

    pyproject.toml文件是“人类可写的”(以及 setup.cfg )。我会在这里给 setuptools一个答案和 poetry .
    但首先,重要的是要知道,在这种情况下,setuptools 和诗歌的行为类似于所谓的构建后端,如今有多个这样的后端可用,setuptools 只是其中之一。其他构建后端包括 flit , pymsbuild , pdm , 和更多。他们中的一些人希望他们的配置(包括依赖项)写在 pyproject.toml 中。 ,有些人希望它在另一个文件中。

    设置工具
    截至今天(2020 年 10 月),setuptools 不支持将其配置写入 pyproject.toml .你仍然必须写一个 setup.py ,或 setup.cfg ,或两者的结合。
    我的建议是尽量写在 setup.cfg ,以及 setup.py可以很短:
    import setuptools
    setuptools.setup()
    这样的 setup.cfg看起来像这样:
    [metadata]
    name = Thing
    version = 1.2.3

    [options]
    install_requires =
    SomeLibrary ~= 2.2
    packages = find:
    有关依赖项的具体引用:
  • https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html
  • https://www.python.org/dev/peps/pep-0508/
  • https://www.python.org/dev/peps/pep-0440/

  • 顺便说一句,请注意在某些情况下可以省略 setup.py文件完整,条件之一是 setup.cfg文件和 pyproject.toml文件存在并包含所有必要的信息。以下是 pyproject.toml 的示例这适用于 setuptools 构建后端:
    [build-system]
    build-backend = 'setuptools.build_meta'
    requires = [
    'setuptools >= 43.0.0',
    ]
    最后还有 plans来自 setuptools 维护者,允许在 pyproject.toml 中写入配置(而不是 setup.cfgsetup.py ),但我们还没有(2020 年 10 月)。

    诗词
    在诗歌中,一切都在 pyproject.toml 中定义.
    该文件可以手写。据我所知,没有严格要求明确安装诗歌本身(诸如 pip installpip wheel 之类的命令可以让您走得更远)。 pyproject.toml文件可以很简单:
    [tool.poetry]
    name = 'Thing'
    version = '1.2.3'

    [tool.poetry.dependencies]
    python = '^3.6'
    SomeLibrary = '~2.2'

    [build-system]
    requires = ['poetry-core~=1.0']
    build-backend = 'poetry.core.masonry.api'
    引用:
  • https://python-poetry.org/docs/pyproject/
  • https://python-poetry.org/docs/dependency-specification/
  • 关于setuptools - 如何编写一个可以安装包的最小工作 pyproject.toml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64150719/

    73 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com