PyScript 이란?
python 코드를 클라이언트단인 웹브라우저에서 동작시킬 수 있고, PyScript에서 Javascript 라이브러리를 호출하고, python 으로 모든 웹 개발이 가능하다고 한다.
PyScript
- CPython 과 WebAssembly /Emscripten은 포팅해주는 Pyodide 으로 제작
- PyScript는 추후 다른 언어들까지의 지원을 제공할 예정
Get Started
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <!DOCTYPE html> <html> <head> <title>Pyscript</title> <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css"> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> </head> <body> <py-script> print('Hello World!') </py-script> <py-script> import random
for i in range(3): rNumber = random.randrange(1, 20) print('random number: ' + str(rNumber))
print("closed...") </py-script> </body> </html>
|
파이썬 코드에서 동작하기 위해 필요한 파이썬 패키지 정의
1 2 3 4 5 6 7 8
| <py-env> - bokeh - matplotlib - pandas - scikit-learn - path: - ./my-custom-py-module.py </py-env>
|
파이썬 표준 라이브러리나 써드파티 OSS 패키지들과 함께 사용하기 위해서는 py-env 태그에 dependency 명시
웹 페이지에서 실행될 파이썬 코드를 작성
1 2 3
| <py-script> print('Hello, World!') </py-script>
|
py 파일 import 로드
1
| <py-script src="./python_file.py"></py-script>
|
코드 유저가 입력하고 확인할 수 있는 REPL (read-eval-prin loop) 컴포넌트를 생성
1 2 3 4 5
| <py-repl> import numpy as np
print(np.random.randn(10)) </py-repl>
|
데이터 시각화 샘플 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| // index.html
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css"> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> <py-env> - matplotlib - numpy - paths: - ./data.py </py-env> </head> <body> <py-script>print('Hello world!')</py-script> <h1>Let's plot random numbers</h1> <div id="plot"></div> <py-script output="plot"> import matplotlib.pyplot as plt from data import make_x_and_y
x, y = make_x_and_y(n=1000)
fig, ax = plt.subplots() ax.scatter(x, y) fig </py-script> </body> </html>
|
1 2 3 4 5 6 7 8
| // data.py
import numpy as np
def make_x_and_y(n): x = np.random.randn(n) y = np.random.randn(n) return x, y
|
PyScript는 현재 alpha 단계에 있고, 많은 알려진 이슈들이 있으며 (로딩 시간 등) PyScript를 활용해 다양한 것을 시도해보기를 권하지만 아직은 production 단계에서 사용하는 것을 권장하지 않는다고 한다.
참조