iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >各类Python项目的项目结构及代码组织最佳实践
  • 183
分享到

各类Python项目的项目结构及代码组织最佳实践

python开发语言代码规范源代码管理 2023-09-02 19:09:22 183人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1. 了解python项目文件组织结构非常重要 为什么要掌握pythob项目结构? 优秀的程序员都使用规范的项目代码结构,了解这些好的习惯方式,能帮助你快速读懂代码如果项目是几个人合作开发,好的代码结

1. 了解python项目文件组织结构非常重要

为什么要掌握pythob项目结构?

  • 优秀的程序员都使用规范的项目代码结构,了解这些好的习惯方式,能帮助你快速读懂代码
  • 如果项目是几个人合作开发,好的代码结构,便于分工,减少混乱,使项目开发过程更顺畅。

本文将为您介绍: 项目结构预备知识,基本项目结构 ,带多个子包的项目结构,flask项目结构,机器学习项目结构等常见类型的项目结构,有疑问,欢迎留言

预备知识:Package包, Module模块与 fiile文件的关系

Package(包), Module(模块), file(文件) 三者关系,
Package由模块组成
包含功能代码的.py 代码文件也称为 module 模块, 但不能把 config.py , __init__.py称为模块。
在这里插入图片描述

预备知识: 包与目录的关系

虽然在形式上,可以把1个包理解为1个目录,但并非是包含代码的目录都是包,
在这里插入图片描述
二者区分的关键是, 包目录包含 __init__.py 文件,不包含此文件的不能称之为包目录。

2. 应用最广泛的 Python 项目结构的基本形式

本文介绍的python项目结构适合于中小型项目, 应用非常广泛,初学者应该养成好习惯,一开始就用这种方式来组织自己的代码。

假设新建项目的名称为 myproject, 可以在windowslinux终端, 创建如下项目结构

└─myproject    │  .gitignore    │  LICENSE    │  readme.md    │  requirements.txt    │  setup.py    │    ├─myproject    │      main.py    │      util.py    │      __init__.py    │    └─test            test_main.py    

说明如下:

1) 项目根目录与包目录的区分

第1层 myproject 是项目根目录,第2级 myproject是包目录,为什么这样组织,主要是基于好的实践经验,项目根目录主要用于存放配置,手册,启动文件等。 而主要功能都放在package包中,Pythton包的具体组织形式就是1个子目录,由于是基本项目,功能不多,只有1个包,因此用项目同名做为包名,所有实现代码放在 ·myproject/myproject· 目录下。

2) 项目根目录

主要有几类文件:

  • setup.py 文件, 这是要安装的包信息
  • 项目说明, readme.md , readme.rst 等。
  • requirements.txt, 第3方依赖库列表
  • License, 许可说明文件
  • .gitignore 如果使用git 做为仓库,这个文件说明哪些文件不上传

3) 包目录

包目录下主要有:

  1. 包目录下还必须有1个__init__.py文件,(参考 Python项目中的 init.py的作用及内容 )n
  2. python实现代码 .py文件。

4) test目录

主要保存测试文件,都是test开头文件。

3. 再简化:命令行式项目的结构

对于1个非常简单的程序 ,还可以简化为如下形式

sample/├── .gitignore├── LICENSE├── README.rst├── requirements.txt├── sample.py├── setup.py└── test_sample.py
  1. 带子应用的项目结构

如果项目功能较多,有几个开发者,可以把项目拆分,分成几个子包来开发。在 myproject的主包目录下创建子包目录

└─myproject    │  .gitignore    │  LICENSE    │  readme.md    │  requirements.txt    │  setup.py    │    ├─myproject    │  │  main.py    │  │  util.py    │  │  __init__.py    │  │    │  ├─app_sample    │  │  │  sample.py    │  │  │  __init__.py    │  │  │    │  │  └─__pycache__    │  │          sample.cpython-39.pyc    │  │          __init__.cpython-39.pyc    │  │    │  └─__pycache__    │          main.cpython-39.pyc    │          __init__.cpython-39.pyc    │    └─test            test_main.py

说明:

  1. 子包目录的sample.py, __init__.py文件内容分别如下:
 # sample.py文件 def demo():    return "this is a demo function"# __init__.py 文件from .sample import demo # 或者 from sample import * 
  1. 在myproject/main.py中
from app_sample import *def main():    return "main test"print(main())print(demo())

输出为:
main test
this is a demo function

也可以这样导入 sameple.py 中demo函数

from app_sample.sample import demo

4. Flask 项目结构

Django有项目结构生成工具不同,Flask 项目结构需要自己来构建, 1个结构良好的项目结构形式,要考虑子应用隔离,模型,模板文件、静态文件等路径,
下面是推荐的 Flask项目结构:

flaskr-tutorial/├── flaskr/│   ├── ___init__.py│   ├── db.py│   ├── schema.sql│   ├── auth.py│   ├── blog.py│   ├── templates/│   │   ├── base.html│   │   ├── auth/│   │   │   ├── login.html│   │   │   └── reGISter.html│   │   └── blog/│   │       ├── create.html│   │       ├── index.html│   │       └── update.html│   └── static/│       └── style.CSS├── tests/│   ├── data.sql│   ├── test_auth.py│   ├── test_blog.py│   ├── test_conf.py│   ├── test_db.py│   └── test_factory.py├── venv/├── .gitignore├── setup.py└── MANIFEST.in

5. 机器学习项目结构

机器学习项目是python应用的重要方向,此类项目的特点是,需要有源数据、算法模型目录(注意不是djanGo, flask 的模型),生产环境通常还需要集成 Flask 提供WEB服务,典型的项目结构如下:

sample/├── data/│   ├── external/│   ├── interim/│   ├── processed/│   └── raw/├── models/├── notebooks/├── sample/│   ├── data/│   ├── features/│   └── model/├── tests/├── .gitignore├── LICENSE├── README.rst├── requirements.txt└── setup.py

总结

本文描述的python最流行的基本项目结构形式,后续继续给大家介绍,多应用项目,web项目,AI类应用项目结构的建议。

来源地址:https://blog.csdn.net/captain5339/article/details/128017400

--结束END--

本文标题: 各类Python项目的项目结构及代码组织最佳实践

本文链接: https://www.lsjlt.com/news/391330.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作