python之路-15-软件目录结构规范
2017-11-26 13:32
423 查看
15.1层次清晰的目录结构
1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
2.可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
15.2目录组织方式
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
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: 安装、部署、打包的脚本。setuptools管理
requirements.txt: 存放软件依赖的外部Python包列表。
README: 项目说明文件。
注:开源项目或许需要增加LICENSE.txt,ChangeLog.txt文件等
关于README的内容(每个项目都应该有的一个文件)
它需要说明以下几个事项:
软件定位,软件的基本功能。
运行代码的方法: 安装环境、启动命令等。
简要的使用说明。
代码目录结构说明,更详细点可以说明软件的基本原理。
常见问题说明。
15.3 不同模块之间的调用
相对路径和绝对路径
#print(__file__) ###在pycharm上执行的是绝对路径,但是程序是在后台执行的,打印相对路径
#print(os.path.abspath(__file__)) ###动态获得绝对路径
#print(os.path.dirname(os.path.abspath(__file__))) ###找上级父目录
#print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ###找上上级父目录
模块之间调用
新建目录Atm,在Atm下新建Python Package分别是bin、conf、core,新建目录logs。Bin下新建python file名为atm.py,conf新建python file为setting.py,core下新建python file名main.py
现在通过bin下atm.py文件调用core下main.py文件里的函数。
Atm.py
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import setting
from core import main
main.login()
main.py
#!Author:lanhan
def login():
print("Welcome to my atm")
1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。
2.可维护性高: 定义好组织规则后,维护者就能很明确地知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
15.2目录组织方式
假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了:
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: 安装、部署、打包的脚本。setuptools管理
requirements.txt: 存放软件依赖的外部Python包列表。
README: 项目说明文件。
注:开源项目或许需要增加LICENSE.txt,ChangeLog.txt文件等
关于README的内容(每个项目都应该有的一个文件)
它需要说明以下几个事项:
软件定位,软件的基本功能。
运行代码的方法: 安装环境、启动命令等。
简要的使用说明。
代码目录结构说明,更详细点可以说明软件的基本原理。
常见问题说明。
15.3 不同模块之间的调用
相对路径和绝对路径
#print(__file__) ###在pycharm上执行的是绝对路径,但是程序是在后台执行的,打印相对路径
#print(os.path.abspath(__file__)) ###动态获得绝对路径
#print(os.path.dirname(os.path.abspath(__file__))) ###找上级父目录
#print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ###找上上级父目录
模块之间调用
新建目录Atm,在Atm下新建Python Package分别是bin、conf、core,新建目录logs。Bin下新建python file名为atm.py,conf新建python file为setting.py,core下新建python file名main.py
现在通过bin下atm.py文件调用core下main.py文件里的函数。
Atm.py
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import setting
from core import main
main.login()
main.py
#!Author:lanhan
def login():
print("Welcome to my atm")
相关文章推荐
- 小白的Python之路 day4 软件目录结构规范
- python基础----软件目录结构规范
- python软件目录结构规范
- 初学Python——软件目录结构规范
- python基础-软件目录结构规范
- Python3.5——软件目录结构规范
- Python基础之软件目录结构规范
- python基础——软件目录规范
- 软件目录结构规范
- Python全栈之路目录结构
- 软件目录结构规范以及在不同目录间进行模块调用
- 软件目录结构规范
- Python模块:Re模块、附软件开发目录规范
- 软件目录结构规范
- Python21 软件目录开发规范
- 软件目录结构规范
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
- Python 浅谈编程规范和软件开发目录规范的重要性
- 内置参数以及软件目录结构规范的学习(week4)
- Python 目录结构,代码规范