为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,推荐目录结构如下
Foo/ |--core/ | |--core.py | |--api/ | |--api.py | |--db/ | |--db_handle.py | |--lib/ | |--common.py | |--conf/ | |--settings.py | |--run.py |--setup.py |--requirements.txt |--READMEj
简要解释一下:
core/:存放业务逻辑相关代码
api/:存放接口文件,接口主要用于为业务逻辑提供数据操作。
db/:存放操作数据库相关文件,主要用于与数据库交互
lib/:存放程序中常用的自定义模块
conf/:存放配置文件
run.py:程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所载的文件夹作为sys.path的第一个路径,这与就省去了处理环境变量的步骤。
setup.py:安装、部署、打包的脚本
requirements.txt:存放软件以来的外部python包列表。
README:项目说明文件。
除此以外,有一些方案给出了更多的内容,比如LICENSE.txt ChangeLog.txt文件等,主要是在项目需要开源时才会用到。
关于README的内容,这个应该是每一个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。它需要说明以下几个事项:
1: 软件定位,软件的基本功能;
2:运行代码的方法:安装环境、启动命令等;
3:简要的使用说明;
4:代码目录结构说明,更详细点可以说明软件的基本原理;
5:常见问题说明。
关于setup.py和requirements.txt:
一般来说,用setup.py来管理代码的打包、安装、部署问题。业界标准的写法是用python流行的打包工具setuptools来管理这些事情,这种方式普遍应用于开源项目中。不过这里的核心思想不使用标准化的工具来解决这些问题,而是说,一个项目一定要有一个安装部署工具,能快速便捷的在一台新机器上将环境装好、代码部署好和将程序运行起来。
requirements.txt文件的存在是为了方便开发者维护软件的依赖库。我们需要将开发过程中依赖库的信息添加进该文件中,避免在setup.py安装依赖时漏掉软件包,同时也方便了使用者明确项目引用了哪些python包。
这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别,这样就可以简单的通过pip install -r requirements.txt来把所有Python依赖库都装好了。具体格式参照https://pip.readthedocs.io/en/1.1/requirements.html