Pulpcode

捕获,搅碎,拼接,吞咽

0%

合理的规划python项目

之前看过一些别人写的python项目目录结构,自己其实也一直尝试把python项目结构做好,规范的项目结构,能为代码带来很多方便。

import

规范的项目结构是使用标准import的前提,我之前的一篇博客,提到过这点,对于三种引用方式,implicit relative import,explicit relative import,absolute import

实际上只有第三种,才是官方推荐的,第一种是官方强烈不推荐的,python3中已经不可以使用了,我们的from future import absolute_import也就是为了禁用这种方式。参见我之前的一篇博客:详解python import

就像我说的那样,你要把主控main.py放到最外层,将其它模块都构造成完整的包。

就是你test目录下的单测,也要在主控的目录下负责调用才行。我想说的是如果你的代码中出现了其它两种方式,比如这种写法:

1
2
import sys
sys.path.append('..')

你要想想,是不是,你一开始设计的就有问题。

我现在的python目录结构大概是这样,平时用的python框架主要是flask和tornado,
实际上flask的项目偏业务重些,所以代码量也非常多,但是一般而言,flask的项目都比较规范,
因为一些文档已经在告诉你如何构建项目结构,如何使用它的一系列插件。

到是tornado的项目,因为其本身就用来写些接口和微服务,更偏基础服务,所以很多开发者很少注意其项目结构。

我比较中意的python项目结构,大概是这样的(这算是我的标配了):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
README.md
manage.py : 管理server的启动,停止,载入预制数据,运行单测,命令行管理文件
requirements.txt : 需要文件导入包(但是我觉得,这个算是载入的)
fabfile.py: 管理和发布程序
config.py:配置文件,一般里面会有三个类,develop(开发),test(测试),product(生产)
const.py:类似于数据字典,常量配置,避免魔数
logic : 些被封装起来的业务函数和业务类
app: 后台服务,前端api,里面一般会包含,handler,等文件夹
batch: 定时任务
orm:用来存放orm和一些封装起来的数据库操作函数
doc: 文档
sample: 实例程序
test: 所有的单元测试
utils:自定义工具类,可以放一些自己写的函数,比如我自己写过一个好用的时间类
static:静态文件夹
sql: sql文件

注意不要log文件目录放在项目文件目录里。