为什么执行poetry build会抛出ModuleOrPackageNotFound异常?
报错原因与解决方案
你遇到的ModuleOrPackageNotFound报错是poetry构建时无法匹配到pyproject.toml中声明的包对应的目录结构导致的,可按以下步骤排查解决:
- 第一步:核对包声明与实际目录结构
打开项目根目录下的pyproject.toml,查看[tool.poetry]块的name字段,你当前声明的包名为mdspliter.tree,poetry默认会在项目根目录下寻找mdspliter/tree/路径,且要求该路径下至少存在1个__init__.py文件(空文件也可)。- 如果你的包放在
src目录下(即路径为src/mdspliter/tree/),需要在[tool.poetry]块新增以下配置指定包源目录:packages = [{include = "mdspliter", from = "src"}] - 如果实际目录结构和声明的包名不一致,直接修改
name字段和实际目录保持匹配即可。
- 如果你的包放在
- 第二步:检查拼写错误
注意你声明的包名mdspliter是否是笔误(常见同类名称为mdsplitter,多一个字母t),如果是拼写错误,把name字段修正为和实际目录一致的拼写即可。 - 第三步:确认
__init__.py存在
检查mdspliter目录、mdspliter/tree目录下是否都存在__init__.py文件,缺失的话新建空的对应文件即可。
修改完成后重新执行poetry build就能正常构建源码包了。
触发的原始报错如下:
ModuleOrPackageNotFound No file/folder found for package mdspliter.tree
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

