Python import 是动态加载模块、构建命名空间、处理依赖的过程;模块是.py文件,包是含__init__.py的目录;需合理组织项目结构(如src布局)、避免循环导入、用python -m运行确保路径正确。
Python 的 import 机制不是简单的“把代码复制进来”,而是动态加载模块对象、构建命名空间、处理依赖关系的过程。理解它,才能合理组织项目、避免循环导入、正确发布包、调试导入错误。
每个 .py 文件默认就是一个模块,文件名(不含 .py)即模块名。import 时 Python 会按 sys.path 列表顺序查找该名字对应的文件:
注意:重复 import 同一模块不会重新执行,而是直接返回缓存对象——这是实现单例和避免重复初始化的关键。
一个普通目录只要包含空文件 __init__.py(Python 3.3+ 可省略,但显式保留更清晰),就成为包。包允许用点号分隔的层级结构,比如 from mypackage.submodule import func。
常见错误是把脚本和模块混放,导致导入失败或无法 pip install。推荐结构:
myproject/
├── pyproject.toml # 定义构建系统、依赖、元数据(现代标准)
├── src/
│ └── mypackage/ # 实际代码放 src 下,避免本地开发时意外 import 当前目录
│ ├── __init__.py
│ ├── core.py
│ └── utils/
│ ├── __init__.py
│ └── helpers.py
├── tests/
│ └── test_core.py
└── scripts/
└── run_app.py # 入口脚本,通过 -m 方式调用:python -m mypackage.core
关键点:

遇到 ImportError 或 ModuleNotFoundError,别急着改 sys.path:
掌握 import 的实际行为,比死记语法更重要。它决定了你的代码能否被他人复用、能否在不同环境中稳定运行。
来电咨询