首页 > 其他分享 >软件开发目录规范

软件开发目录规范

时间:2023-05-07 20:55:14浏览次数:35  
标签:文件 requirements 软件开发 -- setup py 规范 txt 目录

软件开发目录规范

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

Copy

Foo/
|-- 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: 项目说明文件。

除此之外,有一些方案给出了更加多的内容,比如LICENSE.txt,ChangeLog.txt文件等,主要是在项目需要开源时才会用到,请读者自行查阅。

关于README的内容,这个应该是每个项目都应该有的一个文件,目的是能简要描述该项目的信息,让读者快速了解这个项目。它需要说明以下几个事项:

Copy

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

标签:文件,requirements,软件开发,--,setup,py,规范,txt,目录
From: https://www.cnblogs.com/ycmyay/p/17380135.html

相关文章

  • linux 中查看各个子目录占用磁盘的大小
     001、[root@PC1test]#lsdir1dir2dir3[root@PC1test]#du-h##查看所有子目录占用磁盘的大小100M./dir1300M./dir230M./dir3430M. ......
  • 第10章:10W QPS真刀实操__以及基于ZK+Netty手写分布式测试工具 177手机路人甲账号 主目
    10WQPS真刀实操__以及基于ZK+Netty手写分布式测试工具参考链接系统架构知识图谱(一张价值10w的系统架构知识图谱)https://www.processon.com/view/link/60fb9421637689719d246739秒杀系统的架构https://www.processon.com/view/link/61148c2b1e08536191d8f92f10WQPS真刀实......
  • Java javadoc 标准和注释规范
    (一)基本定义Javadoc是Sun公司提供的一个技术,从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档(二)使用方式javadoc源文件名.javajavadoc-d文档存放目录源文件名.java通过IDEA生成Javadoc:Tools->GenerateJavaDoc(三)基本标签标签说明@......
  • [docker]mysql的docker镜像中docker-entrypoint-initdb.d目录的妙用
    docker-entrypoint-initdb.d是Docker官方MySQL镜像中的一个目录,用于初始化数据库。在该目录下,可以放置一些SQL脚本文件,MySQL会在容器启动时自动执行这些脚本文件,用于创建用户、创建数据库、创建表等操作。具体来说,当MySQL镜像启动时,其entrypoint.sh脚本会检查是否存在......
  • Linux系列---【如何根据端口号确定应用是否已启动?并根据端口号定位到程序所在的目录?】
    如何根据端口号确定应用是否已启动?并根据端口号定位到程序所在的目录?方法一(lsof命令)#注意:没有该命令先执行安装命令yuminstalllsof#查看端口是否被占用lsof-i:7080如图,输完没有反应,说明端口未被占用,即应用未启动如图,输完如果有反应,寿命端口已占用,使用pwdx+pid命令即可......
  • Linux各目录作用
    打开Ubuntu20.04系统,根目录如下:1、binbin为binary的简写,主要放置系统的必备执行文件,各种命令的实现在这个目录中。2、sbin主要放置系统管理的必备程序,root用户的命令在这个目录中。3、devdev为device的缩写,储存硬件设备信息。4、lib和lib64lib为library的缩写,lib存放着......
  • CS 学位不能完全准备你成为一名软件开发人员
    自学者甚至可能具有优势你是否担心没有计算机科学学位意味着你准备不足?或者,你认为拥有学位对于成为一名开发人员非常重要?CS学位的强大神话需要消亡。以下才是真正重要的。CS程序教授什么当你获得计算机科学学位时,你学到了什么?仅仅快速浏览美国顶尖计算机科学院的课程表......
  • Python将目录添加到环境变量
     importsys,ossys.path.append(os.getcwd())#将当前工作目录加入path#sys.path.append:添加环境变量#os.getcwd:返回当前工作目录(注意是工作目录cwd哦)importsys,ossys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#将当前文件的上级目录......
  • 数仓建模规范--非常全
    数仓开发规范 一.数据模型架构原则 1.数仓分层原则优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长。那么问题来了,一直在讲数仓要分层,那数仓分几层最好?目前市场上主流的分层方式眼花缭乱,不过看事情不能只看表......
  • 记一次给Centos /data目录挂载新增的500G硬盘
    首先,关机,加一块硬盘,再开机:登录系统,输入命令fdisk-l看一下硬件设备: 发现硬盘已经可见了。输入命令df-h查看分区情况: 输入命令fdisk/dev/sdb对/dev/sdb进行分配,选择主分区,一路默认(回车)到底: 输入fdisk-l查看新设备名字: 使用mkfs.xfs(客户要求)对/dev/s......