python子目录如何引用父目录下函数

python子目录如何引用父目录下函数

作者:Joshua Lee发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何在Python子目录中导入父目录的模块?

我在一个Python项目中,子目录中的脚本需要调用父目录里的函数,应该怎么实现这种模块导入?

A

使用相对导入或修改sys.path来导入父目录模块

在Python中,子目录脚本无法直接导入父目录模块,可以通过相对导入的方式,比如使用 from .. import module_name。但这种方式要求项目被当作包来运行,且需要__init__.py文件。如果相对导入不方便,可以通过修改sys.path,将父目录路径添加进去,例如:

import sys
import os
sys.path.append(os.path.abspath('..'))
import module_name

这样就能调用父目录下的函数。

Q
是否需要添加__init__.py文件以便子目录引用父目录函数?

为了在Python子目录中调用父目录的函数,是否必须在相关目录中添加__init__.py?

A

init.py用于将目录标记为包,有助于相对导入

init.py的存在能够将目录识别为Python包,从而支持相对导入语法。如使用 from ..module import function 之类的方式时,相关目录应包含__init__.py文件。不过如果直接修改sys.path或者采用绝对路径导入,init.py文件不是必需的,但推荐统一使用包结构进行导入,避免路径问题。

Q
使用相对导入时,如何运行子目录中的脚本?

遇到在子目录里使用相对导入时,直接运行脚本会报错,怎样才能正确运行?

A

通过模块方式运行或调整运行路径解决相对导入问题

相对导入在直接用python执行子目录脚本时,经常会出现ImportError。解决方法是不要直接运行脚本,而是通过项目根目录使用模块方式运行: python -m package.subpackage.script 。这里package代表项目包名。如果只是直接执行文件,则无法识别相对导入路径,导致错误。调试时也可以使用IDE的Run Configuration,指定工作目录为项目根目录。