复杂问题简单化--分解(分离关注点)
可参考https://kenreitz.org/essays/repository-structure-and-python
一、N层架构:
- 表示层/视图层
- 业务层
- 数据层
- 领域层(实体):领域类、实体类 对应 数据库表
- 工具模块、公用模块-util
二、模式架构
myproject
├── myproject
│ └── __init__.py
├── data
│ └── data1.dat
├── scripts
│ └── rpm_install.sh
├── docs
│ └── abc.rst
├── examples
│ └── app.py
├── tests
│ └── test_myproject.py
├── LICENSE
├── MANIFEST.in
├── README.rst
├── requirements.txt
├── setup.cfg
└── setup.py
其中,
- data/是数据目录
- scripts/是项目部署依赖的系统环境安装脚本
- docs/项目文档目录,一般以 reStructureText 格式书写,最终使用 Sphinx 自动生成文档,并选择是否托管到 readthedocs
- examples/示例程序目录。
- tests/测试目录。
- requirements.txt 软件外部依赖 Python 包列表。
- LICENSE/MANIFEST.in/setup.py/setup.cfg 项目打包,参考 Python 打包分发工具 setuptools
- README.rst
django、scrapy、flask都是这样写的