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

Python项目存在__init__.py仍报ModuleNotFoundError问题求助

跨包导入ModuleNotFoundError问题解决方案

出现该错误的核心原因是Python运行时的模块搜索路径sys.path默认没有包含你的项目根目录:你直接进入assignment02目录运行new_file.py时,Python只会把当前assignment02目录加入搜索路径,自然找不到同属于project目录下的assignment01包。

下面是三种可落地的解决方案,可根据自己的使用场景选择:

  • 方法1:调整运行方式(无侵入式,最推荐)
    不要进入assignment02目录运行脚本,切换到project目录下,以模块方式运行脚本:
    python -m assignment02.new_file
    
    该方式不需要修改任何代码,Python会自动将当前工作目录(也就是project目录)加入搜索路径,你原本写的导入语句可以直接正常生效。
  • 方法2:临时添加搜索路径(适合调试场景)
    在new_file.py的最开头,所有导入语句之前添加如下代码:
    import sys
    import os
    # 自动获取project目录的绝对路径,加入模块搜索路径
    sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    
    添加完成后不管你在哪个目录运行new_file.py,都能正常找到assignment01包。
  • 方法3:配置PYTHONPATH环境变量(本地开发长期使用)
    把你的project目录的绝对路径添加到系统的PYTHONPATH环境变量中:
    • Windows cmd 执行:set PYTHONPATH=C:\xxx\your_project_path\project;%PYTHONPATH%
    • Mac/Linux 终端执行:export PYTHONPATH=/xxx/your_project_path/project:$PYTHONPATH
      配置完成后,该环境下所有Python项目都能识别project下的所有子包。

注意:不要尝试用相对导入语法(比如from ..assignment01 import old_file)解决该问题,相对导入仅支持包内部模块调用,直接运行脚本时会触发相对导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:04