【发布时间】:2016-05-30 17:29:41
【问题描述】:
我一直在使用this post 中描述的方法来设置 IPython Notebook 以与 Django 很好地配合使用。该方法的要点是创建一个 IPython 扩展,该扩展设置 DJANGO_SETTINGS_MODULE 并在 IPython 启动时运行 django.setup()。
扩展的代码是:
def load_ipython_extension(ipython):
# The `ipython` argument is the currently active `InteractiveShell`
# instance, which can be used in any way. This allows you to register
# new magics or aliases, for example.
try:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
import django
django.setup()
except ImportError:
pass
最近升级到 Jupyter Notebook 后,我现在无法使用此设置。通过向笔记本的第一个单元格添加类似的代码,我可以在 Jupyter 笔记本中运行 Django 代码。但是,我无法弄清楚如何让 Jupyter 自动运行扩展程序,因此我不必为我正在创建的每个笔记本再次执行此操作。
我应该怎么做才能让 Django 和 Jupyter 玩得很好?
更新: 对于@DarkLight - 我正在使用 Django 1.8.5 和 Jupyter 1.0.0。我在笔记本中运行的代码是:
import os, sys
sys.path.insert(0, '/path/to/project')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settingsfile")
import django
django.setup()
【问题讨论】:
-
你知道怎么做吗? Django shell_plus --notebook 对我不起作用,显示应用未加载错误。
-
@DarkLight - 我最终从一个脚本运行命令,我将它添加到每个新笔记本的第一个单元格中。不是很漂亮,但很有效。
-
你能告诉我你正在使用的 django、ipthon 和 jupyter 的版本,以及你正在使用的代码(如果它与答案中的不同)。因为对我来说,django.setup() 调用只会导致 ipython 单元挂起。
-
当我在设置文件中设置 DEBUG=False 时,它终于可以工作了。知道是什么问题吗?
-
@DarkLight 不知道 debug=False。我已经在我的开发环境中运行了它,它使用 debug=True 没有问题。我会尽快根据您提出的信息更新问题。
标签: django jupyter-notebook ipython jupyter