You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从外部文件夹导入含内部依赖的Python模块遇ModuleNotFoundError怎么办

解决跨目录导入时找不到同模块依赖的问题

问题原因

当从外部文件夹导入abc.py时,Python的模块搜索路径默认以当前运行脚本的目录为基准,而非abc.py所在的目录。abc.py里直接写import xyz,只有当运行脚本与abc.py、xyz.py在同一目录时才有效,外部导入时自然找不到xyz模块。

解决方法

方法1:使用相对导入

将abc.py中的导入语句修改为相对导入,明确指定xyz是当前模块的同级模块:

from . import xyz as npc

若需要直接运行abc.py(而非作为模块导入),相对导入会报错,可加判断兼容两种场景:

if __name__ == "__main__":
    # 直接运行abc.py时使用绝对导入
    import xyz as npc
else:
    # 作为模块被导入时使用相对导入
    from . import xyz as npc

方法2:手动将abc所在目录添加到Python搜索路径

在abc.py开头添加代码,把自身所在目录加入Python模块搜索路径:

import sys
import os

# 获取abc.py所在的绝对目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 将该目录添加到搜索路径
sys.path.append(current_dir)

import xyz as npc

这种方式无需修改导入习惯,且不管从哪个目录导入abc.py,都能找到同级的xyz.py。

方法3:将stable目录转为Python包

在stable目录下创建空的__init__.py文件,把整个目录变成可导入的Python包。此时abc.py里可选择以下导入方式:

# 包内绝对导入
from stable import xyz as npc
# 或者继续用相对导入
from . import xyz as npc

这种方式更符合Python模块化规范,适合长期维护的项目。

内容的提问来源于stack exchange,提问作者OldIndianProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:27:22