Python 包相对导入详解
1. 包导入概述
在 Python 中,包导入是常见的操作。例如 from win32com.client import constants, Dispatch
这行代码,它从 win32com
包的 client
模块中获取名称。在基于 Java 的 Jython 实现的 Python 代码中,包导入也很普遍,因为 Java 库也是按层次结构组织的。
在最近的 Python 版本中,标准库中的 email
和 XML
工具同样被组织成包的子目录。Python 3.X 更是将更多相关模块组合成包,包括 tkinter
GUI 工具、HTTP 网络工具等。以下是在 Python 3.X 中访问各种标准库工具的导入示例(2.X 的用法可能有所不同):
from email.message import Message
from tkinter.filedialog import askopenfilename
from http.server import CGIHTTPRequestHandler
无论是否创建包目录,最终都可能会从包中导入内容。
2. 包相对导入的概念
包导入通常关注从包外部导入包文件。在包内部,导入同包文件可以使用与从包外部导入相同的完整路径语法,但有时也可以利用特殊的包内搜索规则来简化导入语句,即导入可以相对于包