如何用Poetry将非标准目录结构代码打包为可按包名导入的Python包?
可以实现,无需调整现有目录结构
你只需要修改pyproject.toml中的打包配置,将src/resources下的文件映射到包名pack的根目录即可,具体操作如下:
修改pyproject.toml配置
移除原有的include配置,改用packages字段指定路径映射:
[tool.poetry] name = "pack" packages = [ { include = "resources", from = "src" } ]
该配置的作用是:将src目录下的resources文件夹及其所有内容,打包后放置到pack包的顶层目录。
验证效果
- 执行打包命令:
poetry build
- 本地安装测试包:
pip install dist/pack-*.whl
- 测试导入:
from pack import a, b # 也可以直接导入模块内的对象 from pack.a import some_function
补充说明
- 如果
resources下存在子目录,该配置会自动递归包含所有内容,无需额外设置。 - 建议移除原
include配置,避免src目录被额外打包造成冗余。
内容的提问来源于stack exchange,提问作者Guillaume
相关产品推荐
相关产品推荐

