一、规范目录结构的好处:
1、可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
2、可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。随着时间的推移,代码规模增加,项目结构不会混乱,仍然能够组织良好。
二、目录组织形式:
项目名
|-- bin
| |-- 启动脚本.py
|
|-- 项目名
| |-- tests
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|— conf
|— logs
|-- docs
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
三、目录结构解释:
bin:
存放项目的一些可执行文件,当然你可以起名script/
之类的也行。项目名:
存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。(2) 其子目录tests/
存放单元测试代码; (3) 程序的主入口命名为main.py,从bin的启动脚本调用main.py
docs:
存放一些文档。setup.py:
安装、部署、打包的脚本。requirements.txt:
存放软件依赖的外部Python包列表。README:
项目说明文件。- config:项目配置文件
- logs:日志文件
四、关于README文件的内容:参考redis项目的README写法
- 软件定位,软件的基本功能。
- 运行代码的方法: 安装环境、启动命令等。
- 简要的使用说明。
- 代码目录结构说明,更详细点可以说明软件的基本原理。
- 常见问题说明。
五、setup.py文件:一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。手动部署会遇到过以下问题:
- 安装环境时经常忘了最近又添加了一个新的Python包,结果一到线上运行,程序就出错了。
- Python包的版本依赖问题,有时候我们程序中使用的是一个版本的Python包,但是官方的已经是最新的包了,通过手动安装就可能装错了。
- 如果依赖的包很多的话,一个一个安装这些依赖是很费时的事情。
- 新同学开始写项目的时候,将程序跑起来非常麻烦,因为可能经常忘了要怎么安装各种依赖。
六、总结,简单项目中:bin,项目名(放源代码),conf,logs,这几个目录是必须的,README,main.py,项目名.py(启动脚本),这三个文件是必须的