合理的包结构应按抽象层级组织:domain/(纯业务逻辑)、application/(用例实现)、infrastructure/(外部依赖适配)、interfaces/(对外入口)、tests/(镜像分层),并遵循分层清晰、依赖可控、配置隔离、可扩展设计等原则。
大型Python项目不是把所有代码塞进一个文件夹就完事的。合理的包结构能降低维护成本、提升协作效率、方便测试和部署,关键在于按职责分离、兼顾可扩展性、预留演进空间。
不要按“功能模块”粗暴切分,而要按抽象层级组织:
包名全部小写、无下划线,层级不宜超过三层。关键规则:
__init__.py 中显式导出公共接口,控制外部可见范围配置不是放在 settings.py 就算完事:
base.py(通用)、dev.py、prod.py,用 pydantic.BaseSettings 管理类型安全python-dotenv 在开发时自动加载 .env,生产环境由运维注入一开始就预设插件机制和替换点:
NotificationService),让不同渠道(Email/SMS/Sla
ck)实现它entry_points 在 setup.py 或 pyproject.toml 中注册插件入口extensions/ 目录,存放非核心但可能被第三方集成的能力(如审计日志、指标上报)不复杂但容易忽略。结构定型后,团队成员对“某段逻辑该放哪”会有共识,新人上手快,重构风险低。