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

Python导入时controllers目录__init__.py失效问题排查与解决

问题原因及解决方案

可能的原因

出现这种导入差异,大概率是以下某一种情况:

  • controllers目录的__init__.py存在异常:比如文件名拼写错误(写成_init__.py或__init.py)、文件有语法错误导致Python无法执行导入语句、文件权限不足无法被读取。
  • 同名文件/包冲突:Python运行环境的sys.path路径中,存在另一个名为controllers的.py文件或包,导致Python优先加载了这个外部的controllers,而非你项目内的目标目录。
  • 缓存未更新:Python的字节码缓存(__pycache__文件夹)保留了旧版本的controllers包信息,新修改的__init__.py内容未被加载。
  • 导入语句拼写错误:检查controllers/__init__.py里的导入代码,是否存在类名/模块名大小写错误、拼写错误,比如误写为from .Myclass3 import Myclass3。

不修改命名规范的解决办法

按以下步骤排查修复:

  1. 验证__init__.py的有效性

    • 确认文件名是严格的__init__.py,无大小写或拼写错误。
    • 在controllers/__init__.py开头添加测试代码:print("Loading controllers __init__.py"),运行main.py时如果未输出该内容,说明文件未被执行,需检查文件是否损坏或路径配置。
    • 确保导入语句的语法、大小写完全匹配模块和类名:
      from .MyClass3 import MyClass3
      from .MyClass4 import MyClass4
      
  2. 清理Python缓存

    • 删除项目中所有__pycache__文件夹(包括controllers目录下的),重新运行main.py,让Python重新编译加载最新代码。
  3. 排查同名冲突

    • 检查项目根目录、Python安装目录的site-packages文件夹,以及sys.path包含的其他路径,是否存在名为controllers.py的文件或controllers目录,若有则重命名该外部冲突项。
  4. 强制重载模块(临时调试用)
    若以上方法无效,可在main.py开头强制重载controllers包,确保加载最新的__init__.py内容:

    import importlib
    import controllers
    importlib.reload(controllers)
    
    from controllers import MyClass3, MyClass4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:15:34