为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要。软件的目录规范并无硬性标准,只要清晰可读即可,假设你的软件名为foo,笔者推荐目录结构如下

Foo/

|-- core/ # 存放业务逻辑相关代码

| |-- core.py

|

|-- api/  # 存放接口文件,接口主要用于为业务逻辑提供数据操作。

| |-- api.py

|

|-- db/  # 存放操作数据库相关文件,主要用于与数据库交互

| |-- db_handle.py

|

|-- lib/ # 存放程序中常用的自定义模块

| |-- common.py

|

|-- conf/ # 存放配置文件

| |-- settings.py

|

|-- run.py # 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤

|-- setup.py # 安装、部署、打包的脚本。

|-- requirements.txt # 存放软件依赖的外部Python包列表。

|-- README # 项目说明文件。

简要解释一下:

​ • 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

python软件开发目录_软件开发目录规范相关推荐

  1. QtQuick PC端开发实战_专栏总目录

    总目录 序号 标题 等级 技术点 传送门 1 QtQuick PC端开发实战系列(1)_搭建开发环境(Windows) ★☆☆☆☆☆☆☆☆☆ 环境 goto 2 QtQuick PC端开发实战系列(2 ...

  2. 软件技术基础_软件技术(游戏软件开发)专业介绍

    软件技术(游戏软件开发)专业 核心课程 C++程序设计.Java程序设计.C#程序设计.Cocos2d-x游戏开发.Unity3D游戏开发.Android游戏开发.IOS游戏开发.游戏框架设计.游戏服 ...

  3. rp软件app流程图_如何开发app软件,流程怎样

    好的APP开发公司有哪些 手机app开发分为Android客户端开发.iOS客户端开发.Symbian客户端开发.Windows Phone和BlackBerry OS等定制开发.如果找公司做的话,和 ...

  4. 安卓app开发工具_怎么开发app软件需要多少钱?主流app开发工具盘点

    现在智能手机的快速普及让手机app在生活中越来越重要,很多企业及创业者也意识到了app的重要性,但是怎么开发app软件?有哪些主流app开发工具呢?这里就为大家分享一下如何快速开发app软件. 一.编 ...

  5. 图书管理系统需求规格说明文档目录_软件需求分析教与学(教学大纲)

    需求分析课程教学大纲 01. 课程说明 课程名称 需求分析 总学时 32 先修课程: 软件工程导论.数据库原理与设计.信息系统基础 02. 课程性质.目的和任务 软件开发一般包括可行性分析.需求分析. ...

  6. 安卓开发板烧写程序与安装软件的区别_在开发板上安装Android

    一.安装串口调试工具 开发Linux驱动程序无法像开发Android应用程序直接在Eclipse中开发,但是可以通过串口来通信.所以就需要安装串口调试工具,在这儿我们使用的串口调试工具是minicom ...

  7. 产线数字化软件源码_软件生产线技术、开源软件声明、源码下载地址

    软件生产线技术.开源软件声明.源码下载地址 软件生产线指生产软件的软件,先利用建模工具软件用图解的形式给出应用系统的系统模型,之后自动生成应用系统可执行程序,自动完成建立应用系统的工作.它能有效提高应 ...

  8. 内网通不用软件改积分_软件项目为什么不能够如期交付?

    作为一个多年软件行业项目经理,发现大部分软件项目都没办法如期交付给客户.比如,我现在就职的软件公司就有至少5个项目处于延期状态.于是我私下对每个延期项目进行了调研和详细分析,发现普遍存在以下问题: 1 ...

  9. 3d游戏开发相关概念_游戏开发概念

    3d游戏开发相关概念 Game development is one of the most exciting fields of computer science and a major part ...

最新文章

  1. “我被机器解雇了!”Amazon 63岁员工因算法评分太低被自动开除
  2. SQL SERVER大话存储结构:数据库数据文件
  3. 在 Windows 上直接运行 Linux,有命令行就是贼香
  4. java汽车生产工厂模式_什么是工厂模式java
  5. 360企业安全2019暑期实习算法岗笔试
  6. 《数据安全法》今日实施,中国信通院联合百度等企业发起“数据安全推进计划”
  7. 归并排序(Merge_Sort)
  8. lua----------------使用VS2015搭建lua开发环境的一些侥幸成功经验,
  9. JS案例:使用对象、对象数组、正则表达式
  10. 什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?【文末彩蛋】...
  11. 《统计学习方法》python代码资料
  12. HTML旅游景点网页作业制作——旅游中国11个页面(HTML+CSS+JavaScript)
  13. C#基础视频教程5.2 如何编写简单的超级热键
  14. Linux内核IP Queue机制的分析(一)
  15. 修改系统文件更改权限
  16. 模型检测工具汇总(比较全)
  17. 【ElasticSearch系列】ES插件安装
  18. 南京邮电大学CTF-密码学-骚年来一发吗
  19. 你需要启用steam社区界面功能以进行购买_Steam新版游戏库界面上线,筛选游戏功能更强大...
  20. joomlaQQ登录,微信登录

热门文章

  1. 泛型中的模糊继承,解析T的意义
  2. css修改select选择框option被选中的背景颜色_这五个有用的 CSS 属性完全被我忽视了...
  3. Java 集合时间复杂度
  4. 安卓学习 之 ContentResolver内容提供者(七)
  5. 分布式事务——TCC 原理
  6. Codeup-问题 A: 最大连续子序列
  7. 最优解法——7-3 将数组中的数逆序存放 (20 分)——10行代码AC
  8. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签
  9. php常量数组吗,包含数组的PHP常量?
  10. linux驱动大小,为什么在Linux字符驱动程序读取调用中大小总是= 4096?