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

移除反向导入代码后仍出现Cannot import name导入错误的原因

问题原因及解决办法

核心原因:Python模块缓存未清空

当你触发循环导入时,Python解释器会把处于部分初始化状态的模块存入缓存。即使你后来删除了反向导入代码,Python依然会优先加载缓存里的旧模块,而不是重新读取修改后的文件,所以错误会持续存在。

具体解决步骤

  • 停止当前运行的Django服务(或Python进程)
  • 清空Python的模块缓存:
    • 删除项目根目录及所有子目录下的__pycache__文件夹
  • 重新启动服务

额外注意:避免循环导入的正确姿势

以后如果需要在两个模型间建立关联,不要直接导入模型类,改用字符串引用的方式,比如在ForeignKey中这样写:

# 示例:在projects/models.py中关联companies模型
fk_company = models.ForeignKey('companies.companies', on_delete=models.CASCADE)

这种方式无需导入模块,能彻底避免循环导入问题,也是Django官方推荐的跨应用模型关联方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:55:22