Python 模块、包与输入输出全解析
1. 模块搜索机制
在 Python 中,当我们使用 import
语句导入一个模块(例如 foo
)时,解释器会按照特定的顺序在 sys.path
中的每个目录里搜索相关文件。搜索顺序如下:
1. 一个名为 foo
的目录,用于定义一个包。
2. 编译扩展文件,如 foo.so
、 foomodule.so
、 foomodule.sl
或 foomodule.dll
。
3. foo.pyo
文件(仅在使用 -O
或 -OO
选项时)。
4. foo.pyc
文件。
5. foo.py
文件(在 Windows 系统中,Python 还会检查 .pyw
文件)。
如果在 sys.path
的所有目录中都找不到这些文件,解释器会检查该名称是否对应一个内置模块名。若仍无匹配,将抛出 ImportError
异常。
文件编译成 .pyc
和 .pyo
文件的操作仅与 import
语句相关。在命令行或标准输入中指定的程序不会生成这些文