🐍Python 工程与虚拟环境
模块包与导入机制
面试回答
常见问法
Python 的模块和包是什么?导入机制为什么经常出问题?
回答
模块通常就是一个 .py 文件;包是一组模块的组织方式,通常对应一个目录。导入问题高频,是因为它同时涉及:
- 搜索路径
- 包结构
- 相对导入和绝对导入
- 运行入口位置
import os
from mypkg import utils
from . import helpers
追问
__init__.py有什么作用- 为什么直接运行子模块时相对导入容易失败
sys.path是怎么参与导入的
原理展开
导入时,Python 会按一定顺序查找模块,例如当前环境路径和 sys.path 中的目录。
高频坑是这个:
- 把某个包内文件直接当脚本运行
- 结果相对导入失效
更稳妥的方式通常是从包根运行,或用 python -m package.module。
面试里最有价值的回答不是背 import 语法,而是说明: “导入问题本质上是模块搜索路径和包上下文问题。”
易错点
- 直接运行包内模块导致相对导入报错
- 自己文件名和标准库重名
- 不理解
__init__.py、包上下文、搜索路径之间的关系