You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pyproject.toml中配置setuptools的entry_points?

问题:如何在pyproject.toml中配置setuptools的entry_points?

原setup.py中的entry_points配置

原setup.py里的entry_points配置如下:

#!/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",
        ],
    },
)

错误的pyproject.toml尝试及问题

迁移配置到pyproject.toml时写法有误,执行pip install -e .会触发pip._vendor.tomli.TOMLDecodeError: Invalid value错误,错误指向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

正确的两种配置方式

方式一:使用dynamic.entry-points的INI格式多行字符串

按照entry-points规范的INI格式,用多行字符串包裹内容:

[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 = """
[console_scripts]
my-script = myproject.myscript:entrypoint
"""

方式二:使用tool.setuptools.entry-points的TOML表结构(更直观)

直接通过TOML的表结构定义entry-points,无需INI格式字符串:

[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.entry-points."console_scripts"]
my-script = "myproject.myscript:entrypoint"

存根setup.py说明

你使用的存根setup.py无需修改,它可以正常支持pip install -e .的可编辑安装:

from setuptools import setup

if __name__ == "__main__":
    setup()

内容的提问来源于stack exchange,提问作者Croad Langshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:40:29