执行python -m build构建Python包时src目录未被包含问题求助
修复方法
问题根因
setuptools的find:指令默认只会扫描指定路径下包含__init__.py的子目录作为可识别包,你当前直接将代码文件、__init__.py放在src根目录下,没有嵌套在对应的包目录中,导致构建工具未识别到需要打包的代码文件。
解决方案(二选一即可,优先选第一种)
方案1:调整为标准src布局(社区通用规范,推荐)
修改项目目录结构如下,先删除src目录下自动生成的sqlcontroller.egg-info临时文件夹,再新建同名包目录存放代码:
| .gitignore | LICENSE | pyproject.toml | README.md | setup.cfg | └──src └──sqlcontroller | __init__.py | sqlcontroller.py
方案2:修改setup.cfg适配现有结构
如果不想调整目录结构,直接修改setup.cfg的包配置,明确指定要打包的单模块:
[options] package_dir= =src # 替换原有find配置,直接指定模块名 py_modules = sqlcontroller
额外检查项
确认你的pyproject.toml中已配置正确的构建后端,避免版本兼容问题:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
验证步骤
- 清理旧构建缓存:删除根目录下的
build、dist、*.egg-info文件夹,以及src目录下的sqlcontroller.egg-info文件夹 - 重新执行
python -m build - 打开生成的
.tar.gz或.whl文件,确认代码文件已被正常打包
内容的提问来源于stack exchange,提问作者RedKnight91
相关产品推荐
相关产品推荐

