본문 바로가기
Programming/Web

웹에서 파이썬을? PyScript?

by TinKerBellBass 2022. 5. 23.
728x90
반응형

PyScript, WebAssembly

웹 브라우저에서 동작하는 언어로서 자바스크립트는 오랜 기간 군림해 왔다.

그렇게 세월이 흘러 웹에서 사용할 수 있는 저수준 언어인 웹어셈블리가 나왔고,

C, C++, Rust 등의 언어를 컴파일 하여 웹 브라우저가 이해할 수 있는 저수준 언어인 웹어셈블리 코드를 만들 수 있게 되었다.

현재 웹어셈블리는 웹 표준으로서 자리 잡았고 진화하고 있다.

웹어셈블리 코드를 만들기 위한 파이썬 컴파일 프로젝트인 PyScript 가 아나콘다에 의해 개발되기 시작했고

조만간 상용 프로덕트에서 사용할 정도까지 개발될 것 같다.

그리고 다른 언어들 고, 코틀린, 자바 등도 웹어셈블리 코드를 만드는 컴파일러가 개발되지 않을까.

드디어 자바스크립트 독재자의 시대는 끝이 나는 것일까.

 

Getting Started

파이스크립트의 공식 홈

 

Pyscript.net

Run Python code in your HTML.

pyscript.net

파이스크립트의 깃헙 리포지토리

https://github.com/pyscript/pyscript

 

GitHub - pyscript/pyscript: Home Page: https://pyscript.net Examples: https://pyscript.net/examples

Home Page: https://pyscript.net Examples: https://pyscript.net/examples - GitHub - pyscript/pyscript: Home Page: https://pyscript.net Examples: https://pyscript.net/examples

github.com

깃헙에 올라와 있는 Getting Started 를 살짝 실행해 보았다. 

※ 모든 코드는 파이스크립트 깃헙 리포지토리의 Getting Started 에서 가져왔습니다.

VScode 에 Live Server Extension 을 설치하고 헬로월드를 찍어보자.

<html>
  <head>
    <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> </body>
</html>

위 코드를 작성한 html 파일을 만들고  VScode 오른쪽 하단에서 Go Live 를 클릭해서 Live Server 를 기동시키면

헬로월드가 웹브라우저에 찍힌다. 파이썬 코드를 웹브라우저서 사용할 수 있다니!

 

다음으로 파이썬 내장 라이브러리를 import 해서 사용해 보자. 

<html>
    <head>
      <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
      <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
    </head>

  <body>
    <b><p>Today is <u><label id='today'></label></u></p></b>
    <br>
    <div id="pi" class="alert alert-primary"></div>
    <py-script>
import datetime as dt
pyscript.write('today', dt.date.today().strftime('%A %B %d, %Y'))

def compute_pi(n):
    pi = 2
    for i in range(1,n):
        pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
    return pi

pi = compute_pi(100000)
pyscript.write('pi', f'π is approximately {pi:.3f}')
    </py-script>
  </body>
</html>

파이썬 내장 datetime 라이브러리를 사용한 오늘의 날짜, 잘 나온다!

 

py-env 태그를 사용해서 외부 라이브러리도 불러오거나 직접 작성한 파이썬 파일을 로딩할 수도 있고

<py-env>
  - numpy
  - matplotlib
  - paths:
    - /data.py
</py-env>

py-config 태그를 사용해서 메타정보 등을 설정할 수도 있다. yaml 포맷을 쓰는 것이 흥미롭다.

<py-config>
  - autoclose_loader: false
  - runtimes:
    -
      src: "https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js"
      name: pyodide-0.20
      lang: python
</py-config>

그 외에도 py-input, py-box, py-button, py-title 같은 태그도 준비되어 있다.

 

PyScript 의 미래

얼마 전 파이썬 3.11 베타 버전이 릴리즈 되었는데 기존 속도 60% 빨라졌다고 한다.

준비된 라이브러리와 거대한 생태계를 가지는 파이썬이 속도까지 잡는다면 정말 무서워질 것 같다.

알고리즘 풀 때만 파이썬을 사용하는데 이제는 좀 더 본격적으로 파이썬을 공부해야 하지 않을까 하는 생각도 든다.

버그를 유발하는 알 수 없는 동작을 하는 자바스크립트는 언어적으로 약점이 있기 때문에

PyScript 나 웹어셈블리 코드로 컴파일하는 다른 언어들이 등장하면 서서히 쇠퇴하지 않을까.

영원할 줄 알았던 제이쿼리가 사라지고 있듯이..

 

데이터 분야에 강점을 가지는 파이썬을 웹브라우저 언어로서 사용할 수 있다면

데이터를 시각화하는 곳에서는 자바스크립트보다는 파이스크립트가 강세를 보일 것 같다.

파이썬을 사용할 수 있는데 굳이 자바스크립트의 차트 라이브러리 등을 사용할 이유는 없기 때문이다.

728x90
반응형

댓글