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

基于setuptools的pyproject.toml如何自动识别项目包?

解决扁平布局下setuptools自动识别顶层包的配置方案
  • 删掉手动维护的include列表
    当where = ["."]时,setuptools默认会自动扫描当前目录下所有带__init__.py的合法Python包。直接删掉冗长的include列表,新增顶层包时就不用手动加配置了,完全自动识别。

  • 修复exclude规则的生效问题
    原配置里exclude不生效,是因为这里的规则要写包名称模式,不是文件系统的glob路径。比如要排除测试包、文档包,这么写就行:

    [tool.setuptools.packages.find]
    where = ["."]
    exclude = [
        "tests*",  # 匹配所有以tests开头的包
        "docs*",   # 匹配所有以docs开头的包
        "example*" # 匹配所有以example开头的包
    ]
    

    不用写路径,直接用包名前缀匹配就好。

  • 额外:全局排除非包文件/目录
    如果要忽略临时文件、构建目录这类非包内容,在pyproject.toml根节点加个exclude字段(和tool.setuptools同级):

    exclude = [
        "*.pyc",
        "__pycache__/",
        "build/",
        "dist/",
        ".venv/"
    ]
    

    这样构建时这些内容就不会被打包进去。

  • 验证配置是否正确
    跑下面的命令就能看到setuptools自动发现的包列表,确认是不是你要的:

    python -m setuptools discover
    

内容的提问来源于stack exchange,提问作者Klaas van Schelven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:00:05