目录开发标准
1、可读性高
2、可维护性高
目录组织: luffy log conf core libs/modules docs README install python3 setup.py install setup.py bin/ luffy_server.py requirements.txt pip freeze 可列出所有得第三方包
Foo/ |-- bin/ | |-- foo | |-- foo/ | |-- tests/ | | |-- __init__.py | | |-- test_main.py | | | |-- __init__.py | |-- main.py | |-- docs/ | |-- conf.py | |-- abc.rst | |-- setup.py |-- requirements.txt |-- README
解释: 1.bin:存放项目得一些可执行文件 2.foo:存放项目得所有源代码 2.1.源代码中得所有模块,包,放在此目录,不要至于顶层目录。 2.2.子目录tests存放单元测试 2.3.程序得入口命名为main.py 3.docs:存放一些文档 4.setup.py:安装,部署,打包得脚本 5.requirements.txt:存放软件依赖得外部python包列表 (pip freeze 可列出所有得第三方包) 6.README:项目说明书 开源软件得目录组织 https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/
README: 每个项目都应该有的一个文件,简要描述该项目的信息,让读者快速了解这个项目 1.软件定位,软件的基本功能。 2.运行代码的方法: 安装环境、启动命令等。 3.简要的使用说明。 4.代码目录结构说明,更详细点可以说明软件的基本原理。 5.常见问题说明。 setup.py: python流行的打包工具:setuptools https://pythonhosted.org/setuptools/setuptools.html#developer-s-guide 一个项目一定要有一个安装部署工具,快速便捷的在一台新机器上环境装好,代码部署好,程序运行起来。 “复杂的东西自动化,能自动化的东西一定要自动化” 学习技术的方式就是看他人是怎么用的。可以参考python的一个web框架,flask是如何写的? https://github.com/pallets/flask/blob/master/setup.py requirement.txt: 1.方便开发者维护软件的包依赖 2.方便读者明确项目使用了哪些包 具体格式说明: https://pip.readthedocs.io/en/1.1/requirements.html 配置文件的使用方法: 1.配置文件写在一个或多个python文件中,比如此处的conf.py。 2.项目中哪个模块用到这个配置文件就直接通过import conf这种形式来在代码中使用配置。 这样做不好: 1.这让单元测试变得困难(因为模块内部依赖了外部配置) 2.另一方面配置文件作为用户控制程序的接口,应当可以由用户自由指定该文件的路径。 3.程序组件可复用性太差,因为这种贯穿所有模块的代码硬编码方式,使得大部分模块都依赖conf.py这个文件。 配置的使用,更好的方式是: 1.模块的配置都是可以灵活配置的,不受外部配置文件的影响。 2.程序的配置也是可以灵活控制的。