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

使用pyproject.toml时src/mlm目录Python文件被忽略的技术问询

问题解决思路

首先,你的配置里有两个关键问题,直接导致了子目录被忽略的情况:

1. include = ["*.py"] 配置完全错误

[tool.setuptools.packages.find] 里的include参数是用来匹配Python包名的,不是文件名。你写["*.py"]会让setuptools只去找名字以.py结尾的包,这显然不符合需求,直接删掉这一行,用默认的["*"]就能匹配所有合法包。

2. 子目录未被识别的核心原因

setuptools的packages.find只会识别包含__init__.py文件的Python包目录,如果你的子目录(比如目录结构里的tharavu,或者你提到的mlm)没有这个文件,就不会被当成包收录,分两种情况处理:

情况A:子目录是Python包(后续会加.py代码文件)

在子目录里新建一个空的__init__.py文件,比如src/tharavu/__init__.py,这样setuptools就会自动把它识别为Python包并收录。

情况B:子目录只存数据文件(比如你的txt文件)

如果不需要把它做成Python包,只是要打包里面的文件,有两种简单方法:

  • 方法一:用MANIFEST.in
    编辑你的MANIFEST.in文件,添加一行:
    include src/tharavu/*.txt
    
  • 方法二:用pyproject.toml配置
    在pyproject.toml里新增以下内容:
    [tool.setuptools.package-data]
    # 如果tharavu是主包arichuvadi的子目录,用这个
    "arichuvadi" = ["tharavu/*.txt"]
    # 如果tharavu是独立包(已经加了__init__.py),用这个
    "tharavu" = ["*.txt"]
    

额外提示:单个.py文件的收录

你src下的arichuvadi.py、valam.py这些是单个模块文件,不是包,packages.find不会自动收录它们,需要在[project]里添加py-modules配置:

[project]
# 其他配置不变
py-modules = ["arichuvadi", "orunguri-tha", "valam"]

最后修改后的完整pyproject.toml参考:

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

[project]
name = "arichuvadi"
version = "0.0.3"
authors = [
  { name="vanangamudi", email="sgfrecfs@gmail.com" },
]
description = "a basic set of tools to work with Tamil text"
readme = "YENNAI_PADI.txt"
license = { file="LICENSE" }
requires-python = ">=3.5"
classifiers = [
    "Programming Language :: Python :: 3",
    "Operating System :: OS Independent",
]
# 新增:收录单个py模块
py-modules = ["arichuvadi", "orunguri-tha", "valam"]

[project.urls]

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
where = ["src"]
exclude = []
namespaces = true

# 新增:打包数据文件(按需添加)
[tool.setuptools.package-data]
"arichuvadi" = ["tharavu/*.txt"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:48:20