从 Python 中的子目录导入模块

本教程将讲解 Python 中从子目录导入模块的各种方法。假设我们在项目目录的子目录下有一个文件,我们想导入这个文件并在代码中使用它的方法。

我们可以在 Python 中通过将子目录声明为包来导入文件。这样 Python 就会把它当作一个包,我们就可以导入该目录的文件了。另一种选择可以是将子目录添加到 PYTHONPATH 环境变量中,它是 Python 默认寻找要导入的包的路径。下面给出了这些方法的细节和使用方法。

在 Python 中使用 __init__.py 从子目录中导入一个模块

__init__.py 文件用于将一个目录声明为一个包。__init__.py 文件可以防止 Python 将同名的目录混在一起,所以为了区分一个简单的目录和一个包,使用了 __init__.py 文件。

__init__.py 文件可以是空的,也可以有初始化包所需的代码和包所需导入的模块列表,这个列表由 __all__ 变量表示。

一旦 __init__.py 文件被添加到子目录中,我们就可以从子目录中导入该文件,就像下面的示例代码所示。

import subdirectory.myfile

在 Python 中使用 sys.path.insert() 方法从子目录中导入一个模块

从子目录导入文件的另一种方法是将该目录添加到 PYTHONPATH 中。PYTHONPATH 是环境变量,它包含 Python 搜索以导入包的目录的路径。

因此,如果我们使用 sys.path.insert() 方法将子目录添加到 PYTHONPATH 中,Python 将首先查找 PYTHONPATH 中的目录,并从那里导入它。

sys.path.insert() 方法将把子目录插入到 sys.path 或 PYTHONPATH 变量中,该变量包含了 Python 将搜索导入所需模块的目录列表。

下面的示例代码演示了如何使用 sys.path.insert() 方法从子目录中导入一个文件。

import sys
sys.path.insert(0, './subdirectory')
import myfile