在 Python 中从父目录导入模块

Muhammad Waiz Khan 2023年1月30日 2021年4月29日
  1. 使用相对导入从 Python 的父目录中导入模块
  2. 通过将其添加到 PYTHONPATH,从 Python 的父目录中导入模块
  3. 使用 sys.path.insert() 方法从 Python 父目录中导入模块
在 Python 中从父目录导入模块

本教程将说明从 Python 的父目录导入模块的各种方法。我们导入不同的模块以在代码中使用其他功能。它使我们免于再次复制或实现功能,并使代码简洁且易于理解。

假设我们要从当前项目目录的父目录中导入一个模块。我们可以使用不同的方法来做到这一点,下面将对此进行说明。

使用相对导入从 Python 的父目录中导入模块

相对导入用于使用当前目录路径作为参考在代码中导入模块。要使用 import 语句导入模块,我们首先必须通过在父目录中添加 __init__.py 文件来声明目录为包。将父目录声明为包后,我们可以使用相对包方法导入模块。

假设我们有以下目录树。

parent_parent_directory/
    parent_directory/
        mymodule.py
        __init__.py
    current_directory/
        currentmodule.py
    mymodule.py
    __init__.py

下面的示例代码演示了如何从父包中导入模块。

from ..parent_directory import mymodule

要从当前目录的上两级目录中导入模块,我们必须在包目录名之前加三个点,以返回两级,如下面的示例代码所示。

from ...parent_parent_directory import mymodule

通过将其添加到 PYTHONPATH,从 Python 的父目录中导入模块

PYTHONPATH 是一个环境变量,用于指定 Python 导入模块和包时应查看的目录列表。

因此,如果我们从需要导入模块的位置添加父目录,Python 将自动查看父目录并找到所需的模块。

使用 sys.path.insert() 方法从 Python 父目录中导入模块

我们还可以使用 sys.path.insert() 方法将父目录添加到 sys.path 列表中,该列表是字符串列表,用于指定要查找软件包和模块的路径。sys.path 包含 PYTHONPATH 环境变量目录列表,还可以使用 sys.path.insert() 方法添加其他路径。

以下示例代码演示了如何使用 sys.path.insert() 方法将父目录添加到 Python 中的 sys.path 列表中。

import os, sys

p = os.path.abspath('.')
sys.path.insert(1, p)

import mymodule

相关文章 - Python Import