如何在 pyproject.toml 中指定 setuptools 入口点

问题描述 投票:0回答:1

我有一个像这样的setup.py:

#!/usr/bin/env python

from setuptools import setup, find_packages

setup(
    name="myproject",
    package_dir={"": "src"},
    packages=find_packages("src"),
    entry_points={
        "console_scripts": [
            "my-script = myproject.myscript:entrypoint",
        ],
    },
)

如何使用 setuptools 在 pyproject.toml 中编写

entry_points
配置?

我猜测类似这样的事情,继续setuptools' pyproject.toml文档,它说我需要在引用入口点的文档之后使用“INI格式”,但它似乎没有给出例如,我对如何将 setuptools 语法与 pyproject.toml 语法结合起来的猜测是错误的(我从

pip install -e .
得到了一个回溯,报告
pip._vendor.tomli.TOMLDecodeError: Invalid value
,指向 pyproject.toml 中的
entry-points
行):

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[metadata]
name = "myproject"

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.dynamic]
entry-points =
    my-script = myproject.myscript:entrypoint

注意,我在 pyproject.toml 旁边有一个存根 setup.py,如下所示(我读到我需要支持

pip install -e .
,即“可编辑安装”):

from setuptools import setup

if __name__ == "__main__":
    setup()
python setuptools program-entry-point python-packaging pyproject.toml
1个回答
10
投票

请参阅规格本指南

[project.scripts]
spam-cli = "spam:main_cli"

[project.gui-scripts]
spam-gui = "spam:main_gui"

[project.entry-points."spam.magical"]
tomatoes = "spam:main_tomatoes"

如今(自从采用 PEP-660),您根本不需要(存根)

setup.py
脚本来进行可编辑安装。只需使用
python -m pip install --editable .

© www.soinside.com 2019 - 2024. All rights reserved.