🐍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、包上下文、搜索路径之间的关系