본문 바로가기
python web framework

주피터노트북 파일을 웹서비스에 끼워 넣기 (flask)

by 타닥타닥 토다토닥 부부 2023. 3. 20.
반응형

1. 추천 파일 구조

├── app.py      # 플라스크 실행 파일
├── static  # css 파일 구조 ( css 파일 출처 : https://github.com/cbernet/jupyter_web )
│   └── css
│       ├── main.css
│       ├── notebook.css
│       └── pygments
│           └── notebook
│               └── colorful.css
└── templates     # html 파일 디렉션
    ├── jupyter     # 주피터노트북 구동 디렉션
    │   ├── Untitled.html      # 주피터노트북 html 로 저장
    │   └── Untitled.ipynb     # html 파일
    └── main.html     # main 페이지 html 파일

 

2. 주피터 노트북파일을 html 파일로 저장

 -  jupter 디렉션에서 아래 명령어를 입력하면 ipynb 파일을 html 파일로 전환 할 수 있습니다. 

(터미널 실행)

jupyter nbconvert --execute --template basic Untitled.ipynb --to html

!! 주의 !! :  template 옵션을 basic으로 주면 아무 스타일 없이 아래 그림처럼  html 파일이 저장 됩니다.

                  즉 ! css 파일을 새로 구성하여 스타일을 입혀주어야 합니다.

 

 

3. main.html 파일 작성

- static 경로에 있는 css 파일도 html 파일과 연동시키고,

(css 를 일일이 구성할 수 없어  https://github.com/cbernet/jupyter_web 에서 css 파일을 가져왔습니다)

- jinja 2 명령어를 이용하여 Untitled.html 파일을  main.html 파일에 끼워넣습니다.

- 아래 코드는 main.html 파일 코드 입니다.

<head>
  <link rel="stylesheet" href="{{ url_for('static', filename='css/notebook.css') }}"> 
  <link rel="stylesheet" href="{{ url_for('static', filename='css/pygments/notebook/colorful.css') }}"> 
  <link rel="stylesheet" href=" {{ url_for('static', filename='css/main.css') }}">
</head>
<div>
  <h2>hello flask</h2>
  {% include "/jupyter/Untitled.html"%}
</div>

 

 

4. 플라스크를 실행하는 app.py 파일은 아애롸 같이 작성합니다.

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def main():
    return render_template("main.html")

if __name__ == '__main__':
    app.run('0.0.0.0',port=8081,debug=True)

 

 

 

5. python app.py 를 통해 웹서비스를 수행하면 아래와 같이  hello flask 밑에 주피터 노트북 html 파일이 끼워 들어간 것을 확인할 수 있습니다.

 

[참고 사이트]

https://thedatafrog.com/en/articles/jupyter-notebooks-web-pages/

 

Jupyter Notebooks in Web Pages

Learn how to integrate jupyter notebooks in a web page, and how to highlight code and show nice equations.

thedatafrog.com

 

 

반응형

댓글