开发目录的规范
标准目录的规范
我们学习了模块和包之后,为了更好的管理自己的代码就需要将自己的代码分为文件,在分文件夹来管理。有一种普遍规定的规范吗?这就是开发目录规范。
开服目录规范的基本文件结构:
bin 文件夹下为执行文件
core 文件夹下为主逻辑代码内容
conf 文件夹下为配置文件
lib 文件夹下为自定义模块(包)
db文件夹为数据文件
log 文件夹下为日志文件
readme 软件介绍文件
上诉文件夹是普通文件夹
包的本质就是文件夹,所以在Python项目中有__init__文件的就是包
init文件的作用是为了集中所有功能让外界方便调用。
bin文件夹下执行文件,那么不能为包。
conf文件夹是软件的配置信息,比如mysql,oracle,他们明显不是需要一同调用的,所以不用写init文件。
core业务逻辑代码,这其中一定有一个用户的入口,用户进入以后只是在这些不同的业务中来回执行操作,所以这个文件下的模块是相互调用的关系,不需要集合功能给外界调用。
db,lib,log逻辑上更上诉结论相似。
总结:项目的标准结构的第一层仅仅是文件不是包。
如何在执行文件调用项目结构中所有的文件
执行文件需要从core文件下调用主逻辑代码。主逻辑代码需要调用日志,配置,数据,公共模块等。
可是依照模块的查找顺序,内存已存在的模块——>内置的模块——>sys.path中的路径。
显然上诉模块无法被读取。所以需要将sys.path中添加可以查找导入所有文件的路径。
请在执行文件中书写上诉代码
import sys,os #导入sys模块添加将路径添加到sys。path中去, #os模块,获取相应的文件路径 BASE_DIR=os.path.dirname(os.path.dirname(__file__))) #__file__可执行文件的路径 #os.path.dirname()返回当前文件或文件夹的上级文件夹 #BASE_DIR就是这个开发软件的根目录 sys.path.append(BASE_DIR)
那么导入模块和使用模块的方法
import core.src core.src.run()
主逻辑文件中导入配置文件
from conf import settings def login(): with open(settings.DB_PATH) as f: print(f.read())
在lib下的common中
#配置文件获取 日志路径 from conf import setting #日志功能 def logger(msg): with open(setting.LOG_PATH,‘a’,encoding= 'utf-8') as f: f.write(msg)
主逻辑代码导入模块