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

如何解决main.py在子文件夹时导入source模块的ModuleNotFoundError

模块导入失败问题解决

项目结构

Project_root (folder)
   source (folder)
      main.py
      functions(folder)
         test.py
         __init__.py (empty)

(注:根据描述修正结构格式,推测main.py位于source子文件夹下,这是导致导入失败的场景)

错误原因

当main.py在项目根目录的子文件夹中时,Python默认模块搜索路径(sys.path)不包含项目根目录,因此无法识别source模块。

解决方法

方法1:手动添加项目根目录到搜索路径

修改main.py,在导入模块前将项目根目录加入sys.path:

import os
import sys
# 获取当前文件的父目录的父目录(即项目根目录)
root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_dir)

from source.functions import test
test.hello()

方法2:使用相对导入(需按模块方式运行)

如果main.py和functions同属source文件夹,可改用相对导入:

# main.py中修改导入语句
from .functions import test
test.hello()

运行时需从项目根目录执行命令:

python -m source.main

(直接运行python source/main.py会报错,因为此时main.py被当作顶层脚本,相对导入规则不生效)

方法3:配置VS Code工作区与运行环境

  1. 在VS Code中打开Project_root文件夹作为工作区;
  2. 打开.vscode/launch.json(若不存在则创建),添加或修改配置:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "cwd": "${workspaceFolder}",
            "console": "integratedTerminal"
        }
    ]
}

这样运行时的当前工作目录会被设置为项目根目录,Python自动将根目录加入搜索路径,即可正常导入source模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:03:12