当前位置: 首页 > 面试题库 >

如何为Django设置Jupyter / IPython Notebook?

施令雪
2023-03-14
问题内容

我一直在使用中描述的方法,这个职位设立IPython的笔记本电脑与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()

问题答案:

只是为了完整性(但现在是2018年,所以自发布此问题以来,情况可能有所变化):你实际上可以在Django环境中安装Jupyter Python内核,然后将其连接(运行在)另一台Jupyter服务器/环境(你在其中运行ve安装了小部件,扩展程序,更改了主题等)。django_extensions现在仍然只做部分必要的工作:-)

假设你拥有一个与Django分开的Jupyter虚拟环境,并且其内核/扩展安装了--user。所有Jupyter扩展(及其依赖项)都安装在此venv中,而不是Django的一个(一个)(如果需要将它们与Django代码一起使用,则在Django环境中仍然需要熊猫,matplotlib等)。

在Django虚拟环境(可以运行其他版本的Python,包括版本2解释器)中,安装ipython内核:

pip install -U ipykernel
ipython kernel install --user --name='environment_name' --display-name='Your Project'

这将在用户的Jupyter内核目录中创建具有指定名称的内核配置目录(在Linux ~/.jupyter/上是OSX,而​​在OSX上~/Library/Jupyter/),其中包含其kernel.json文件和图像/图标(默认情况下,内核的默认Jupyter图标)。重新安装)。该内核将在创建时处于活动状态的虚拟环境中运行,从而使用完全相同的python版本以及Django项目使用的所有已安装模块。

运行的./manage.py shell_plus --notebook功能非常相似,但是除了需要在当前venv中安装所有内容(包括Jupyter服务器和所有扩展)之外,它还无法在与项目根目录(包含根目录)不同的目录中运行笔记本./manage.py。另外,它将使用在路径上找到的第一个可执行文件python运行内核,而不是虚拟环境的可执行文件,从而使内核在不从活动Django虚拟环境内的命令行启动时表现异常。

为了解决这些问题,以便我们能够在html" target="_blank">配置好的任何Django项目中运行一个Notebook,并能够运行存储在文件系统上任何位置的Notebook,我们需要:

  1. 确保第一个’argv’参数包含虚拟环境中包含的python解释器的完整路径
  2. 添加(如果尚未存在)将包含外壳环境变量的“ env”部分,然后使用它们来告诉Python在哪里可以找到我们的项目以及应使用的Django设置。为此,我们添加了以下内容:
   "env": {
      "DJANGO_SETTINGS_MODULE": "my_project.settings",
      "PYTHONPATH": "$PYTHONPATH:/home/projectuser/projectfolder/my_project"
   }

可选:将“ display_name”更改为人性化并替换图标。
编辑此环境kernel.json文件,你将看到类似的内容:

{
 "display_name": "My Project", 
 "language": "python", 
 "env": {
  "DJANGO_SETTINGS_MODULE": "my_project.settings",
  "PYTHONPATH": "$PYTHONPATH:/home/projectuser/projectfolder/my_project"
 },
 "argv": [
  "/home/projectuser/.pyenv/versions/2.7.15/envs/my_project_venv/bin/python", 
  "-m", 
  "ipykernel_launcher", 
  "-f", 
  "{connection_file}",
  "--ext",
  "django_extensions.management.notebook_extension"
 ]
}

值得注意的行:

  • “ DJANGO_SETTINGS_MODULE”:“ my_project.settings”:你的设置,通常在项目的manage.py内部看到

  • “ PYTHONPATH”:“ $ PYTHONPATH:/ home / projectuser / projectfolder / my_project”:PYTHONPATH已扩展为包含项目的主目录(包含manage.py的主目录),因此即使未在内核中运行该设置也可以找到确切的目录(这里django_extensions将使用通用的目录python,因此将运行错误的虚拟环境,除非从内部启动了整个Jupyter服务器:将其添加到django_extensions创建的kernel.json中将使其能够在Django项目目录中的任何位置运行笔记本)

  • “ /home/projectuser/.pyenv/versions/2.7.15/envs/my_project_venv/bin/python”:内核执行的第一个参数(argv列表)应该是项目虚拟环境的python解释器的完整路径(这是另一件事是django_extensions弄错了:修复此问题将允许任何笔记本服务器运行带有所有已安装模块的特定Django环境的内核)

  • “ django_extensions.management.notebook_extension”:这是将在笔记本中加载’shell_plus’功能的扩展名(可选,但有用:-))



 类似资料:
  • 我一直在使用本文中描述的方法来设置IPython笔记本,以便与Django很好地玩。该方法的要点是创建一个IPython扩展,它设置DJANGO_SETTINGS_模块并运行DJANGO。IPython启动时的setup()。 扩展代码为: 最近升级到Jupyter笔记本电脑后,我的这个设置就被破坏了。我可以在Jupyter笔记本中运行Django代码,方法是在笔记本的第一个单元格中添加类似的代码

  • 每次当我想启动ipython笔记本时,我必须在Windows命令行或中键入“Jupyter notebook”。可以设置别名吗?我尝试在中这样做: 那么如何设置别名并将其保存在中呢?在Windows上启动还有什么更好的主意吗?

  • 问题内容: 我有一个网站,该网站根据访问者选择的位置显示不同的内容。例如:用户输入55812作为邮政编码。我知道哪个城市和地区纬度/经度。也就是给他们有关该领域的内容。我的问题是如何将其存储在Cookie中,以便他们返回时不需要总是输入邮政编码? 我看到如下: 根据其区域设置持久性cookie。 当他们返回已读取的cookie时,获取邮政编码。 根据Cookie中的邮政编码返回内容。 我似乎找不到

  • 问题内容: 我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或向其中添加自定义变量? 问题答案: 要在jupyter笔记本中设置env变量,只需使用魔术命令或,例如或。(单独使用以打印当前的环境变量。) 请参阅:http : //ipython.readthedocs.io/en/stable/interactive/magics.html

  • 问题内容: 是否可以对Windows 7上的默认设置进行永久更改?我想更改字体大小和外壳大小。 问题答案: QtConsole可通过ConsoleWidget进行配置。从…开始:

  • 问题内容: 在我的django项目的文件中,我有这行: 但是我想让我的应用在UTC + 2时区运行,所以我将其更改为 它给出了错误。正确的做法是什么? 谢谢! 问题答案: 以下是有效时区的列表: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones 您可以使用 适用于UTC + 02:00