파이스크립트 알파

파이스크립트(pyscript)가 나왔다고 해서 많은 사람들이 기대가 큽니다.

 

파이썬 데이타 과학 플랫폼을 개발하는 Anaconda 사에서 오픈소스로 시작한 프로젝트로 아직은 알파 버전이라 상용 서비스로 쓰기에는 조금 시간이 걸릴 것 같습니다만, IT의 흐름으로 봤을 때 만약 파이스크립트 프로젝트가 성공하면 웹의 생태계를 상당히 바꾸게 될 수 있다... 까지 기대를 받고 있기 때문에 잘 모르더라도 일단 찍먹이라도 해보면 좋을 것 같습니다.

 

 

파이스크립트는 간단히 말하면 HTML에서 실행하는 파이썬입니다. 파이썬이나 자바스크립트 둘 다 오픈소스 커뮤니티 세계관 최강자인 것은 맞는데 파이썬은 기본적으로 서버사이드 언어기 때문에 자바스크립트 처럼 브라우저에서 바로 사용할 수가 없습니다. 쟁고, 플라스크 등 웹프레임워크가 있지만 자바스크립트 진영에 비하면 점유율이 낮습니다. (한국에서는 그냥 리액트(JS 프레임워크)를 배우라고 한다) 컴퓨팅의 역사는 뭐든 점유율 싸움이기 때문에 점유율이 밀리면 그 언어는 자연스럽게 밀려나게 됩니다.

 

 

두 언어를 비교하는 건 심오하고 논란적이라 길게 이야기하기엔 뭐하지만 사람들은 몇년 전부터 생각해왔습니다. 야 이거 파이썬 완전 직이는데(좋은데) 브라우저에서 못쓰는거야? 자바스크립트는 서버에서도 사용할 수 있는데 왜 파이썬은 브라우저에서 사용이 안되는데?

 

그래서 Anaconda에는 Jupyter notebook 이 있습니다. PC에 설치해야 하긴하지만 데이터 과학도 간에 공유하기에는 충분합니다. 하지만 역시 자바스크립트 처럼 자유롭게 쓸 수가 없습니다.

 

파이스크립트가 나오기 전부터 많은 사람들이 브라우저에서 돌아가는 파이썬을 원했다는 부분입니다. 파이썬이 돌아가기만 하면 이것도 만들 수 있고 저것도 만들 수 있고... 등등 지금도 나쁘지 않지만 한층 더 웹기술의 발전이 가속화 될 것입니다. 나온지 며칠됐다고 벌써 pyscript로 슈퍼마리오 게임을 돌리는 시연도 나왔습니다. 슈퍼마리오를 돌릴 수 있으면 다른 수많은 소프트웨어도 돌릴 수 있다는 뜻 입니다. 파이썬의 장점은 쉽고 빠르게 구현하는 건데 수십만개의 파이썬 프로젝트가 말 그대로 웹브라우저에 들어오는 것 입니다. 자바스크립트 만으로도 다양했던 웹의 생태계가 더욱 풍부해지는 것 입니다.

 

처음부터 웹기술의 구현에 촛점을 맞춘 언어인 자바스크립트와 달리 파이썬은 온갖 응용프로그램을 만들 수 있는 언어입니다. 최근 몇년간은 데이터 기술, 머신 러닝 등 미래 기술에 두각을 나타냈지요. 워낙 많은 프로젝트가 있는데 Real Python 에 따르면 Cool 한 소프트웨어를 만들 수 있다고 합니다. (쿨한 소프트웨어 - 멋진 소프트웨어)

What Can I Do With Python? – Real Python

 

What Can I Do With Python? – Real Python

In this tutorial, you'll find a set of guidelines that will help you start applying your Python skills to real-world problems. By the end of your reading, you'll be able to answer the question "What can I do with Python?"

realpython.com

 

파이썬에서는 수십만개의 프로젝트가 진행중입니다. pypi에는 37만개의 프로젝트에 릴리즈가 340만회나 됐습니다.

이것들이 브라우저로 바로 들어오면 어떤 일이 생길지는 가늠하기 어렵습니다. 물론 기존의 javascript 패키지도 엄청나게 많이 있습니다. (npm은 100만개 이상) 그러면 겹치는 성격의 프로젝트도 많겠지만 기본적으로 자바스크립트와 파이썬의 방향성이 다르기 때문에 더욱 거대한 웹 생태계가 생길 것을 예상할 수 있습니다.

 

그리고 중요한 건 파이썬은 언어 자체가 아름답다 - 는 평가를 받고 있습니다. 아름답다는 것은 설계가 좋다는 말이지요. 자바스크립트는 다 좋은데 설계에 대한 논란이 수십년째 계속되고 있습니다. 무슨 설계가 중요하냐 잘 쓰면 되지 - 라고 할 수 있는데 시간이 좀 지나보면(한 30년 정도?) 설계가 우수한 언어가 살아남을 확률이 큽니다.

 

개인적으로 C와 파이썬을 좋아하는데 이런 성향의 사람들은 파이스크립트를 상당히 환영할 수 있습니다.

 

여기까지는 그런 흐름에 대한 내용이고 다음은 pyscript에서 소개한 내용의 번역입니다.

 

PyScript is a framework that allows users to create rich Python applications in the browser using HTML's interface and the power of Pyodide, WASM, and modern web technologies. The PyScript framework provides users at every experience level with access to an expressive, easy-to-learn programming language with countless applications.

The PyScript framework provides users at every experience level with access to an expressive, easy-to-learn programming language with countless applications.

 

- 파이스크립트는 사용자가 HTML의 인터페이스와 Pyodide, WASM, 최신 웹 기술의 힘을 사용하여 브라우저에서 풍부한 파이썬 애플리케이션을 만들 수 있게 하는 프레임워크이다.

- PyScript 프레임워크는 모든 경험 수준의 사용자에게 수많은 응용프로그램으로 표현적이고 배우기 쉬운 프로그래밍 언어에 대한 액세스를 제공합니다.

 

What is PyScript? Well, here are some of the core components:

Python in the browser: Enable drop-in content, external file hosting, and application hosting without the reliance on server-side configuration

Python ecosystem: Run many popular packages of Python and the scientific stack (such as numpy, pandas, scikit-learn, and more)

Python with JavaScript: Bi-directional communication between Python and Javascript objects and namespaces

Environment management: Allow users to define what packages and files to include for the page code to run Visual application development: Use readily available curated UI components, such as buttons, containers, text boxes, and more

Flexible framework: A flexible framework that can be leveraged to create and share new pluggable and extensible components directly in Python

All that to say… PyScript is just HTML, only a bit (okay, maybe a lot) more powerful, thanks to the rich and accessible ecosystem of Python libraries.

In short, our mission is to bring programming for the 99%.

 

- 파이스크립트란? 다음은 몇 가지 핵심 구성 요소입니다.

- 브라우저의 Python: 서버 측 구성에 의존하지 않고 컨텐츠, 외부 파일 호스팅 및 애플리케이션 호스팅 지원

- 파이썬 생태계: Python과 과학 스택(numpy, panda, scikit-learn 등)의 인기 있는 많은 패키지 실행

- Python with JavaScript: Python과 Javascript 객체 및 네임스페이스 간의 양방향 통신

- 환경 관리: 실행할 페이지 코드에 포함할 패키지 및 파일 정의 허용
시각적 응용 프로그램 개발: 버튼, 컨테이너, 텍스트 상자 등과 같이 쉽게 사용할 수 있는 큐레이션된 UI 구성 요소 사용

- 유연한 프레임워크: Python에서 직접 새로운 플러그 앤 확장 가능한 구성 요소를 생성하고 공유할 수 있는 유연한 프레임워크

PyScript는 HTML에 불과합니다... Python 라이브러리의 풍부하고 액세스 가능한 에코시스템 덕분에 조금(okay 아마도 많이) 더 강력합니다.

 

간단히 말해서, 우리의 임무는 99%를 위한 프로그래밍을 도입하는 것입니다.

 

*******

*******

*******

 

파이썬을 브라우저, 클라이언트에 바로 꽂아서 기존 파이썬의 라이브러리 생태계와 통합시키는 것 입니다. 자바스크립트와 양방향 통신을 한다는 말은 json, xml 같은 포맷으로 프로그램간의 인터페이스를 구현한다는 말처럼 들립니다.

 

장난스런 소개이지만 (Anaconda팀 분위기이기도 하다) 그들의 원대한 포부를 볼 수 있습니다.

 

Hello World 해보기

언제나 새로운 언어, 프레임워크를 시작할 때는 데니스 리치와 커니핸의 Hello World 전통으로 시작하면 좋습니다.

 

pyscript 홈페이지에 가면 빌드 가능한 다운로드도 있는데 지금은 알파 버전에다가 생소해서 잘 모르겠습니다. 그냥 다들 CDN으로 불러와서 테스트하는 수준이니까요.

 

CDN으로 하면 간단해집니다.

<!DOCTYPE html>
<html lang="ko">

<head>
    <title>Pyscript Hello World</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>
</body>

</html>

요렇게 하면 화면에 Hello World! 나옵니다. 다른 웹프레임워크와 비슷하지요. css 하나와 js하나를 가져오고 <py-script> 태그안에 파이썬 코드를 작성합니다.

 

모듈(py 파일)을 가져올 수도 있습니다.

 

랜덤 출력하는 코드조각으로 파이썬 파일을 만들고 html 태그안에 <py-script src="./myPython.py"></py-script> 이걸 넣습니다. src로 파일이름을 넣으면 됩니다.

import random

for i in range(3):
    rNumber = random.randrange(1,20)
    print("random number: " + str(rNumber))

print("closed...")

 

브라우저가 runtime을 로딩한 후 다음과 같이 실행됩니다.

 

 

지금 파이썬을 그냥 브라우저에서 돌린 겁니다. 파이썬의 서드파티 라이브러리로 더 많은 것을 할 수 있습니다. 어디까지 돌아가나 앞으로 많은 테스트를 해봐야 겠지만 pyscript 프로젝트에서 말하는 것은 지금은 알파 버전이라 완전하지 않지만 시간이 지나 프로젝트가 진행될 수록 안정성, 속도, 지원하는 라이브러리 등에서 빠른 변화가 있을 것이라 말하고 있습니다. Anaconda 팀이니까 html 에서 바로 쥬피터 노트북도 실행시킬 수 있을 것 같은데요. 브라우저에서 파이썬을 사용하기 위해서 설치할 필요가 없다는 것은 엄청난 메리트입니다.

 

앞으로 어떻게 발전해갈지 상당히 기대가 큽니다. 여러가지 테스트도 해봐야 겠습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band