我一直在使用中描述的方法这个帖子 https://andrewbrookins.com/python/using-ipython-notebook-with-django/用于设置 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 很好地发挥作用?
UPDATE:对于@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()
-
Install django-extensions
from https://github.com/django-extensions/django-extensions/blob/master/docs/index.rst https://github.com/django-extensions/django-extensions/blob/master/docs/index.rst
pip install django-extensions
-
更改您的设置文件以包含“django-extensions”
INSTALLED_APPS += ['django_extensions']
-
像这样运行你的 Django 服务器:
python manage.py shell_plus --notebook
-
进行修改以适应,并在您的第一个单元格中运行它
import os, sys
PWD = os.getenv('PWD')
os.chdir(PWD)
sys.path.insert(0, os.getenv('PWD'))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local_settings.py")
import django
django.setup()
-
现在你应该能够导入你的 django 模型等,例如:
from app.models import Foobar
Foobar.objects.all()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)