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

Python模块内部导入Modules目录模块出现ModuleNotFoundError报错

报错原因

你在外部脚本可以正常导入是因为运行外部脚本时,脚本所在的项目根目录会被自动加入Python的模块搜索路径sys.path;当你直接运行模块内部的脚本时,Python只会将当前运行脚本所在的子目录加入搜索路径,无法定位到Modules目录的父级路径,因此找不到对应的模块。
另外注意:如果你的目录名是首字母大写的Modules,Linux/macOS等大小写敏感的系统下,导入语句写全小写的modules也会触发报错,需要保持大小写一致。

解决方案

你可以根据自己的使用场景选择对应方案:

  • 场景1:内部脚本仅作为模块被外部导入,不需要单独运行
    使用相对导入即可,根据你当前脚本和目标模块的相对位置调整层级即可,比如当前脚本在Modules/utils目录下,要导入config.database,就写成:

    from ..config.database import *
    

    其中..代表上一级目录,多嵌套一层就多加一个.。

  • 场景2:需要单独运行内部脚本
    方案一:在脚本开头手动将项目根目录加入搜索路径,示例代码如下(根据脚本嵌套深度调整os.path.dirname的嵌套层数,确保最终拿到的是Modules所在的根目录的绝对路径):

    import sys
    import os
    # 示例为脚本在Modules下两层子目录的写法,层级更多就多加一层os.path.dirname
    sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    

    方案二:以模块的方式运行脚本,不要直接执行py文件。回到项目根目录后,用-m参数运行,比如要运行Modules/test.py就执行:

    python -m Modules.test
    
  • 场景3:长期开发该项目,希望一劳永逸解决路径问题
    将项目根目录的绝对路径添加到系统的PYTHONPATH环境变量中,配置完成后Python运行任意脚本都会搜索该路径下的模块,导入语句不需要做任何修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:48:05