将Jupyter Notebook/Google Colab嵌入Django应用程序。

7

我想要建立一个网站,将能够创建单元格并在其中运行Python代码的Jupyter笔记本功能嵌入到我的网站中。

为了创建网站,我正在使用Django,希望能够嵌入Google Collab或Jupyter Notebook。

顺便说一下,我已经进行了足够的研究,并且被堆积在StackOverflow链接上,其中没有关于此问题的答案,或者他们想要在Jupyter Notebook中使用Django。

非常感谢您提供的任何指导或参考。


你有检查过 django-extensions 的 shell plus 吗?https://django-extensions.readthedocs.io/en/latest/shell_plus.html - DanielM
2个回答

4

你有多种选项来实现这个:

注意:我使用了“jupyter-lab”,你可以使用“jupyter notebook”

1- 重定向到 "jupyter notebook" 的第一种选项:

django view.py

from django.shortcuts import redirect,HttpResponse
import subprocess
import time

def open_jupiter_notbook(request):
    b= subprocess.check_output("jupyter-lab list".split()).decode('utf-8')
    if "9999" not in b:
        a=subprocess.Popen("jupyter-lab  --no-browser --port 9999".split())
    start_time = time.time()
    unreachable_time = 10
    while "9999" not in b:
        timer = time.time()
        elapsed_time = timer-start_time
        b= subprocess.check_output("jupyter-lab list".split()).decode('utf-8')
        if "9999" in b:
            break
        if elapsed_time > unreachable_time:
            return HttpResponse("Unreachable")
    path = b.split('\n')[1].split('::',1)[0]
    #You can here add data to your path if you want to open file or anything
    return redirect(path)

如果你想在模板中实现而不是重定向,可以在Django模板中使用以下代码:

<iframe src="{% url 'open_jupiter_notbook' %}" width= 600px height=200px></iframe>

2- 第二个选项:

只需使用Jupyter Notebook命令,通过使用subprocess.check_output("你的命令".split())即可实现。


我还没有尝试过,今天会尝试您的解决方案。 - Sachin Rajput
谢谢,这对于通过Django启动Jupyter Lab起作用了,但它不支持多用户。 - Sachin Rajput
你可以在这里查看:https://github.com/jupyterhub/jupyterhub - AlASAD WAIL

2

首先将其导出,然后再导入,这里有一个很好的解释。

from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib

我正在寻找一种解决方案,使人们可以在线编写和运行代码,而无需转到其他平台。 - Sachin Rajput

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接