咱们学习了模块和包以后,为了更好的管理本身的代码就须要将本身的代码分为文件,在分文件夹来管理。有一种广泛规定的规范吗?这就是开发目录规范。mysql
bin 文件夹下为执行文件sql
core 文件夹下为主逻辑代码内容oracle
conf 文件夹下为配置文件app
lib 文件夹下为自定义模块(包)学习
db文件夹为数据文件spa
log 文件夹下为日志文件日志
readme 软件介绍文件code
包的本质就是文件夹,因此在Python项目中有__init__文件的就是包blog
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())
#配置文件获取 日志路径 from conf import setting #日志功能 def logger(msg): with open(setting.LOG_PATH,‘a’,encoding= 'utf-8') as f: f.write(msg)
主逻辑代码导入模块