语言基础之:目录结构

1 目的

**可读性高: **有助不熟悉这个项目的代码的人,快速的了解这个项目。
**可维护性高: **即使代码/配置的规模增加,项目结构不会混乱,利于代码维护。

2 目录组织方式

Foo/
|-- bin/
|   |-- foo
|
|-- foo/
|   |-- tests/
|   |   |-- __init__.py
|   |   |-- test_main.py
|   |
|   |-- __init__.py
|   |-- main.py
|
|-- docs/
|   |-- conf.py
|   |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README

注:
bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
foo/: 存放项目的所有源代码。

  • (1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。
  • (2) 其子目录tests/存放单元测试代码;
  • (3) 程序的入口最好命名为main.py。
    docs/: 存放一些文档。
    setup.py: 安装、部署、打包的脚本。
    requirements.txt: 存放软件依赖的外部Python包列表。

3 其他需要注意的地方:

3.1 README

  • 软件定位,软件的基本功能。
  • 运行代码的方法: 安装环境、启动命令等。
  • 简要的使用说明。
  • 代码目录结构说明,更详细点可以说明软件的基本原理。
  • 常见问题说明。

3.2 setup.py

若用Python写项目的时候,安装环境、部署代码、运行程序这个过程全是手动完成,遇到过以下问题:

  • 安装环境时经常忘了最近又添加了一个新的Python包,结果一到线上运行,程序就出错了。

  • Python包的版本依赖问题,有时候我们程序中使用的是一个版本的Python包,但是官方的已经是最新的包了,通过手动安装就可能装错了。如果依赖的包很多的话,一个一个安装这些依赖是很费时的事情。

  • setup.py可以将这些事情自动化起来,提高效率、减少出错的概率。“复杂的东西自动化,能自动化的东西一定要自动化。”

  • setuptools的文档比较庞大,刚接触的话,可能不太好找到切入点。学习技术的方式就是看他人是怎么用的,可以参考一下Python的一个Web框架,flask是如何写的: setup.py

3.3 requirements.txt

  • 方便开发者维护软件的包依赖。将开发过程中新增的包添加进这个列表中,避免在setup.py安装依赖时漏掉软件包。
  • 方便读者明确项目使用了哪些Python包。
  • 这个文件的格式是每一行包含一个包依赖的说明,通常是flask>=0.10这种格式,要求是这个格式能被pip识别,这样就可以简单的通过 pip install -r requirements.txt来把所有Python包依赖都装好了。

3.4 配置的使用,

  • 模块的配置都是可以灵活配置的,不受外部配置文件的影响。
  • 程序的配置也是可以灵活控制的。
  • 如nginx、mysql这些程序都可以自由的指定用户配置。
posted @ 2022-06-13 18:51  f_carey  阅读(4)  评论(0编辑  收藏  举报  来源