Django:shell_plus 模块导入错误 --notebook

如何解决Django:shell_plus 模块导入错误 --notebook

在 Django 项目中:

python manage.py shell_plus --ipython

正在按预期加载模型导入,例如,工作正常。

尝试时

python manage.py shell_plus --notebook

Jupyter 将启动。但是当尝试创建一个新的 django shell plus notebook 时,我会收到以下导入错误

[I 12:43:00.851 NotebookApp] Kernel started: 68eac163-4064-41ac-824d-5c839562814c,name: django_extensions
[IPKernelApp] WARNING | Error in loading extension: django_extensions.management.notebook_extension
Check your config files in /home/pumpkin/.ipython/profile_default
Traceback (most recent call last):
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/IPython/core/shellapp.py",line 261,in init_extensions
    self.shell.extension_manager.load_extension(ext)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/IPython/core/extensions.py",line 87,in load_extension
    if self._call_load_ipython_extension(mod):
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/IPython/core/extensions.py",line 134,in _call_load_ipython_extension
    mod.load_ipython_extension(self.shell)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django_extensions/management/notebook_extension.py",line 10,in load_ipython_extension
    style=no_style(),File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django_extensions/management/shells.py",line 152,in import_objects
    setup()
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django/__init__.py",line 19,in setup
    configure_logging(settings.LOGGING_CONfig,settings.LOGGING)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django/conf/__init__.py",line 79,in __getattr__
    self._setup(name)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django/conf/__init__.py",line 66,in _setup
    self._wrapped = Settings(settings_module)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/site-packages/django/conf/__init__.py",line 157,in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/home/pumpkin/miniconda3/envs/django22/lib/python3.7/importlib/__init__.py",line 127,in import_module
    return _bootstrap._gcd_import(name[level:],package,level)
  File "<frozen importlib._bootstrap>",line 1006,in _gcd_import
  File "<frozen importlib._bootstrap>",line 983,in _find_and_load
  File "<frozen importlib._bootstrap>",line 953,in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>",line 219,in _call_with_frames_removed
  File "<frozen importlib._bootstrap>",line 967,line 677,in _load_unlocked
  File "<frozen importlib._bootstrap_external>",line 728,in exec_module
  File "<frozen importlib._bootstrap>",in _call_with_frames_removed
  File "/home/pumpkin/django_projects/book_management/book_management/__init__.py",line 3,in <module>
    from .celery import app as celery_app
  File "/home/pumpkin/django_projects/book_management/book_management/celery.py",line 9,in <module>
    from celery import Celery
ModuleNotFoundError: No module named 'celery'

我可能遗漏了一些东西,我很乐意提供更多详细信息并帮助重现该问题。

版本:

  • django 扩展 3.1.1
  • Django 3.1.6
  • jupyter 1.0.0
  • jupyter 客户端 6.1.12
  • jupyter 控制台 6.4.0
  • jupyter 核心 4.7.1
  • jupyterlab-pygments 0.1.2
  • jupyterlab-widgets 1.0.0

编辑:

我可以概括一下这个问题。执行时: python manage.py shell_plus --notebook 并打印 sys.path 我们得到

sys.path=
['/home/pumpkin/django_projects/book_management','/home/pumpkin/miniconda3/envs/booking_j2/lib/python39.zip','/home/pumpkin/miniconda3/envs/booking_j2/lib/python3.9','/home/pumpkin/miniconda3/envs/booking_j2/lib/python3.9/lib-dynload','/home/pumpkin/miniconda3/envs/booking_j2/lib/python3.9/site-packages']

这是预期的(它是当前激活的 conda env)

但是当尝试启动一个新的 Django shell-plus notebook 时,我们可以看到跟踪依赖于另一个 conda 环境:

[I 14:21:31.694 NotebookApp] Creating new notebook in 
[I 14:21:32.373 NotebookApp] Kernel started: 8d4013f7-ae9e-4bf4-80a3-ca9483e72f0b,in init_extensions
    self.shell.extension_manager.load_extension(ext)

在此 conda 环境中,未安装所需的模块。因此出现错误

现在我的问题是,为什么 ipython(?) 不能在正确的 conda env 中运行?

请注意,在运行 python manage.py shell_plus --ipython 时,sys.path 与预期一致。同样,在启动经典的 python 3 notebook 时,导入也按预期进行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?