模块基础——相对导入、绝对导入及软件开发目录规范

本文介绍了Python中的绝对导入和相对导入,解释了绝对路径和相对路径的概念,并通过示例说明了如何解决模块找不到的问题。同时,文章讨论了软件开发的目录规范,包括一般项目目录结构和各部分的作用,强调了目录结构对于程序可读性和维护性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绝对导入与相对导入

​ 在介绍绝对导入与相对导入之前,需要先搞清楚什么是绝对路径和相对路径。

  • 绝对路径:从计算机的根目录开始到文件所处位置,包含全部的路径。
  • 相对路径:以文件所在位置为基础,进行定位,从而对其他文件位置进行描述的路径表达。

在明白了绝对路径和相对路径的区别之后,接下来我们对模块的绝对导入和相对导入进行分析。

目录结构:

测试代码:

# m1.py
import m2
def f1():
    print('from m1')
    
    
# m2.py
def f2():
    print('from m2')
    
    
# start.py
from aaa import m1

运行start.py,出现如下结果:

image-20220118220623601

出现这个错误的原因是模块m2存储的路径不在sys.path中,因此无法找到该模块,我们可以通过在sys.path中添加查找路径,从而解决这样的问题:

import sys
sys.path.append(r"m2模块所存位置的绝对路径")

以上方式虽然解决了目前的问题,但是如果将文件打包发给其他人使用,你所添加的路径依旧会报错,难道我们每次都需要去主动添加路径吗?答案是否定的,这时我们就用到了相对导入,通过.来代表当前文件所在的目录,..代表上一层目录,代码如下:

# m1.py
from .bbb import m2
def f1():
    print('from m1')

如此以来,无论任何一个人在任何一台电脑执行,都不会出现错误。

总结:

  • 绝对导入:默认是以执行文件为准,从sys.path中查找
  • 相对导入:主要使用的是句点符 ,.代表当前目录,..代表上一级目录

**注意:**在执行文件中,不能出现相对导入。

软件开发目录规范

为了提高程序的可读性和维护性,我们在设计软件程序的时候会按照规范的目录结构,这就是软件开发目录规范,但是这并无硬性要求,只要清晰明了即可。

一般情况下,目录规范如下:

image-20220118223550089

相关文件解释如下:

  • bin/:一般情况下存放启动文件,当你的执行文件只有一个的时候,或者比较少的时候,可以放在项目的根目录中
  • conf/:存放配置文件,一般配置文件中内容为大写
  • core/:存放业务逻辑相关代码
  • interface/:存放接口文件,接口主要用于业务逻辑提供数据
  • db/:存放数据库相关文件
  • lib/:存放程序中常用的自定义模块
  • README:项目说明文件
  • requirement.txt:存放软件依赖的外部Python包列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值