7

I wanted to build a website and embed the jupyter notebook functionality of being able to create cells and run python code within it into my website

For creating a website I m using Django and I would like to embed either the google collab or jupyter notebook

By the way I have researched enough and have been stuck with the StackOverflow links where there no answer about this or the one where they want to use django in jupyter notebook

Thanks in advance for any guidance or any reference that you guys can provide.

All Іѕ Vаиітy
  • 24,861
  • 16
  • 87
  • 111
Sachin Rajput
  • 238
  • 7
  • 26
  • Have you checked `django-extensions` shell plus? https://django-extensions.readthedocs.io/en/latest/shell_plus.html – DanielM Dec 21 '21 at 17:49

2 Answers2

4

You have many options to do that:

Note:: I used "jupyter-lab" you can use "jupyter notebook"

1- The first option to redirect to "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)

if you want to implement it in template instead of redirect, you can use the following code in Django template:

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

2- The second option:

just use jupyter notebook commands by using this subprocess.check_output("your command".split())

AlASAD WAIL
  • 775
  • 4
  • 18
2

Export it first and then import it, look here for a good explanation

from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib
Transformer
  • 6,963
  • 2
  • 26
  • 52
  • I'm looking for a solution using which I can actually let people code and run online without having to go to any other platforms – Sachin Rajput Dec 23 '21 at 03:12