当前位置: 首页 > news >正文

python从入门到实践:软件开发目录规范

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

QQ/
|-- core/
|   |-- core.py
|
|-- api/
|   |-- api.py
|
|-- db/
|   |-- db_handle.py
|
|-- lib/
|   |-- common.py
|
|-- conf/
|   |-- settings.py
|
|-- run.py
|-- setup.py
|-- requirements.txt
|-- README

 我们做出一下说明:

core/:存放业务逻辑相关代码

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

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

lib/:存放程序中常用的自定义模块

conf/:存放配置文件

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

setup.py: 安装、部署、打包的脚本。

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

README:项目说明文件。

README的格式一般如下:

1、软件定位,软件的基本功能;

2、运行代码的方法: 安装环境、启动命令等;

3、简要的使用说明;

4、代码目录结构说明,更详细点可以说明软件的基本原理;

5、常见问题说明。

 

 一般来说,用setup.py管理代码的打包、安装、部署问题。业界标准的写法是用Python流行的打包工具setuptools来管理这些事情,这种方式普遍应用于开源项目中,一个项目一定要有一个安装部署工具,能快速便捷的在台新机器上将环境装好、代码部署好和将程序运行起来。

requirements.txt文件的存在是为了方便开发者维护软件的依赖库。我们需要将开发过程中依赖库的信息添加进该文件中,避免在setup.py安装依赖时漏掉软件包,同时也方便了使用者明确项目引用了哪些Python包。这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别,这样就可以简单的通过pip install-r requirements.txt

相关文章:

  • vue3新拟态组件库开发流程——loading组件源码
  • JS中新逻辑赋值运算符使用(?.、? ?、| |=、=)
  • 软考网络工程师需要哪些复习资料?
  • CIPT备考心得分享-下一个考过的就是你
  • 构建集团统一管控体系,低代码派上用场
  • iconfont 使用
  • 4.类的定义,变量类型,方法类型
  • pytorch中一些有关tensor的操作
  • 大数的乘法
  • DQL操作(数据库表数据查询操作)
  • linux共享内存
  • 小波神经网络的基本原理,小波神经网络什么意思
  • 被一位读者赶超,手摸手 Docker 部署 ELK Stack
  • Math类(Java)
  • Android项目中各文件的作用
  • 2017-08-04 前端日报
  • Akka系列(七):Actor持久化之Akka persistence
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • echarts花样作死的坑
  • es6
  • HTML5新特性总结
  • httpie使用详解
  • Java超时控制的实现
  • KMP算法及优化
  • LeetCode29.两数相除 JavaScript
  • PHP的类修饰符与访问修饰符
  • Redis在Web项目中的应用与实践
  • Sublime text 3 3103 注册码
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 测试如何在敏捷团队中工作?
  • 大型网站性能监测、分析与优化常见问题QA
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • - 概述 - 《设计模式(极简c++版)》
  • 开源地图数据可视化库——mapnik
  • 每天10道Java面试题,跟我走,offer有!
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用agvtool更改app version/build
  • 温故知新之javascript面向对象
  • 新版博客前端前瞻
  • 原生 js 实现移动端 Touch 滑动反弹
  • 终端用户监控:真实用户监控还是模拟监控?
  • 追踪解析 FutureTask 源码
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • puppet连载22:define用法
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 数据结构
  • #include<初见C语言之指针(5)>
  • #Linux(make工具和makefile文件以及makefile语法)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)llvm ir转换过程
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (zz)子曾经曰过:先有司,赦小过,举贤才