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

Django项目中shell_plus --notebook模块导入错误:IPython未使用正确Conda环境的问题排查

解决django-extensions Notebook内核使用错误Conda环境的问题

你的问题核心是:shell_plus --notebook调用了之前注册在django22环境下的django_extensions内核,而非当前激活的booking_j2环境,导致找不到celery模块。下面是具体的排查和修复步骤:

1. 检查已注册的Jupyter内核列表

首先确认当前Jupyter内核的注册情况,运行以下命令:

jupyter kernelspec list

你会看到类似这样的输出,重点关注django_extensions内核的路径:

Available kernels:
  django_extensions    /home/pumpkin/.local/share/jupyter/kernels/django_extensions
  python3              /home/pumpkin/miniconda3/envs/booking_j2/share/jupyter/kernels/python3

如果django_extensions的路径指向django22环境,那就是问题所在。

2. 删除错误注册的内核

找到错误的内核后,用命令删除它:

jupyter kernelspec remove django_extensions

执行后会提示确认,输入y即可删除。

3. 在当前激活的环境中重新注册内核

确保你已经激活了正确的booking_j2环境:

conda activate booking_j2

然后重新注册django-extensions的Notebook内核,有两种方式:

  • 方式一:直接通过django-extensions命令注册
    python -m django_extensions install --user
    
  • 方式二:运行shell_plus --notebook触发内核注册
    直接执行你原本的命令,此时django-extensions会自动在当前环境注册正确的内核:
    python manage.py shell_plus --notebook
    

4. 验证修复结果

再次运行jupyter kernelspec list,确认django_extensions内核的路径已经指向booking_j2环境。此时再创建新的Django shell-plus笔记本,应该就能正常加载模型,不会出现celery模块找不到的问题了。

为什么会出现这种差异?

  • python manage.py shell_plus --ipython是直接在当前激活的环境进程中启动IPython,所以会使用当前环境的依赖和路径,自然没问题。
  • 而--notebook模式是先启动Jupyter服务器,然后调用预先注册的django_extensions内核——如果这个内核是之前在django22环境下注册的,就会使用那个环境的Python解释器和依赖,导致模块缺失。
  • 普通Python 3笔记本正常,是因为它使用的是当前环境注册的python3内核,和django_extensions内核是分开管理的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:17:34