Python跨目录Import导入方法详解:同级、子目录与上级目录

叶初
叶初
发布时间:2026-10-13 | 4人浏览过
原创

本文详细解析Python中跨目录import的三种常见场景:同级目录直接调用、子目录通过包路径导入,以及上级目录利用sys.path追加路径的方法。文章通过具体代码示例和目录结构图,演示了如何处理不同层级间的模块引用,特别强调了在上级目录调用时需创建__init__.py文件及配置sys.path的关键步骤,帮助开发者解决Python项目中的模块导入难题。

本文重点介绍Python在不同层级目录下进行import导入的具体实现方式,通过详细的代码示例展示操作过程,为读者提供具有实际参考价值的学习材料。

随着开发环境从Python 2迁移至Python 3,许多底层机制发生了改变。跨目录导入模块是日常开发中的高频操作,但其表现形式多样,初学者常易混淆。为此,本文对Python中不同层级目录下的import用法进行系统梳理与总结。

同级目录下的模块调用

1. 同级目录下的模块调用

同级目录间的调用相对简单,主要应用于不同类或函数之间的相互引用。由于处于同一目录层级,无需额外处理路径问题,通常采用 `from file import *` 或 `from file import class/function` 等标准格式即可实现导入。

以下通过具体示例进行说明:

程序目录结构如下:


➜ dir_test git:(master) ✗ tree
.
├── pycache
│  └── test1.cpython-37.pyc
├── dir1
│  └── test3.py
├── test1.py
└── test2.py

相关代码实现如下:


from test1 import *
# the below is also ok
#from test1 import dir_test

def test_file2():
  print("this is test file2")

dir_test()
test_file2()

子目录下的模块调用

2. 子目录下的模块调用

当需要调用子目录中的函数或模块时,通常需要在导入语句中包含子目录名称。常用的语法格式包括 `from dir1.file import *` 或 `from dir1 import file` 等形式,以明确指定模块的相对路径。

以下通过具体示例进行说明:


➜ dir_test git:(master) ✗ tree
.
├── pycache
│  └── test1.cpython-37.pyc
├── dir1
│  ├── pycache
│  │  └── test3.cpython-37.pyc
│  └── test3.py
├── test1.py
└── test2.py

相关代码实现如下:


from test1 import *
# the below is also ok
#from test1 import dir_test

from dir1.test3 import *

def test_file2():
  print("this is test file2")

dir_test()
dir1_test()

上级目录下的模块调用

3. 上级目录下的模块调用

相较于前两种情况,调用上级目录中的模块更为复杂。此场景下需借助 `sys` 模块,具体操作包括:首先在待调用的目标文件所在目录中创建一个空的 `__init__.py` 文件(若该目录尚未存在),然后在执行调用的文件中添加 `sys.path.append("..")` 以将上级目录加入搜索路径,从而确保模块能够被成功识别和调用。

以下是一个具体的目录结构示例:


➜ dir_test git:(master) ✗ tree
.
├── pycache
│  └── test1.cpython-37.pyc
├── dir1
│  ├── init.py
│  ├── pycache
│  │  ├── init.cpython-37.pyc
│  │  └── test3.cpython-37.pyc
│  └── test3.py
├── dir2
│  └── test4.py
├── test1.py
└── test2.py

相关代码实现如下:


#!python3

import sys
sys.path.append("..")
from dir1.test3 import *
#import dir1

以上内容为本文的全部总结,希望能为读者的学习与工作提供有益帮助。若觉得内容有用,欢迎继续支持本站获取更多技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表