从 Python 中的子目录导入模块

Muhammad Waiz Khan 2023年1月30日 2021年2月28日
  1. 在 Python 中使用 __init__.py 从子目录中导入一个模块
  2. 在 Python 中使用 sys.path.insert() 方法从子目录中导入一个模块
从 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.pathPYTHONPATH 变量中,该变量包含了 Python 将搜索导入所需模块的目录列表。

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

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

相关文章 - Python Import