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

Django Oscar无法导入Basket、Order及oscar.apps.orderoscar模块求助

Django Oscar: ModuleNotFoundError for 'oscar.apps.orderoscar' 排查与解决

核心排查步骤

  • 彻底清理缓存文件
    错误字符串仅出现在__pycache__二进制文件中,说明是旧配置的缓存残留。执行以下命令清除所有Python缓存:

    find . -name "__pycache__" -type d -exec rm -rf {} +
    find . -name "*.pyc" -delete
    find . -name "*.pyo" -delete
    

    同时清理Django本地缓存(若启用):

    python manage.py clearcache
    
  • 检查INSTALLED_APPS与Oscar应用配置
    仔细核对settings.py中的配置:

    1. 确认INSTALLED_APPS里直接声明的是oscar.apps.order而非拼写错误的orderoscar
    2. 如果使用Oscar的get_core_apps()扩展核心应用,检查自定义应用路径是否正确,示例:
      from oscar import get_core_apps
      
      INSTALLED_APPS = [
          # 其他Django应用
      ] + get_core_apps([
          # 自定义order应用路径,如'yourapp.order',避免拼写错误
      ])
      
  • 拦截错误导入路径
    部分导入逻辑不通过import_module触发(比如底层C实现的导入),导致你修改importlib.__init__.py的断点未生效。可在settings.py最顶部添加代码,强制映射错误模块名到正确路径:

    import sys
    from django.utils.module_loading import import_module
    
    # 将错误模块名指向正确的order应用
    if 'oscar.apps.orderoscar' not in sys.modules:
        sys.modules['oscar.apps.orderoscar'] = import_module('oscar.apps.order')
    
  • 排查隐式引用场景

    1. 检查项目migrations目录下的.py文件(注意不是.pyc),确认无拼写错误的导入
    2. 核对项目依赖的第三方包,排查是否有包错误引用了oscar.apps.orderoscar

验证操作

完成以上步骤后,重启Django服务并执行:

python manage.py check

若无报错,再触发之前出现问题的操作,确认问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:48:15