PyScript 언어: 브라우저에서 Python 직접 실행
Source: Dev.to
PyScript란 무엇인가?
PyScript는 최신 웹 기술을 사용하여 브라우저에서 Python을 실행할 수 있게 해주는 프레임워크입니다. 이를 통해 개발자는 JavaScript를 작성하지 않고도 DOM과 상호작용하고, 데이터를 처리하며, UI를 렌더링하는 Python 코드를 작성할 수 있습니다.
인기 있는 Python 배포판 및 데이터‑science 생태계를 제공하는 Anaconda가 구축하고 유지 관리합니다.
왜 PyScript가 존재하는가
PyScript 이전에 웹에서 Python을 실행한다는 것은:
- 백엔드 API 작성 (Flask / Django / FastAPI)
- 프런트엔드 로직을 위해 JavaScript 프레임워크 사용
- API를 통해 Python과 JavaScript 연결
PyScript는 클라이언트‑사이드 Python 실행을 가능하게 하여 이 분리를 없애고 다음을 가능하게 합니다:
- Python‑우선 웹 애플리케이션
- 브라우저 기반 데이터 과학 및 시각화
- 교육용 및 인터랙티브 Python 콘텐츠
- 백엔드 인프라 없이 빠른 프로토타이핑
PyScript 작동 방식 (내부)
핵심 구성 요소
-
WebAssembly 런타임
- Python은 Pyodide를 사용하여 WebAssembly로 컴파일됩니다.
- 보안 브라우저 샌드박스에서 실행됩니다.
-
Pyodide
- 웹용으로 컴파일된 Python 배포판입니다.
- NumPy, Pandas, Matplotlib 등을 포함합니다.
-
HTML 통합
- 맞춤 HTML 태그 (
<py-script>,<py-config>)를 통해 Python을 실행할 수 있습니다. - Python은 DOM 요소를 직접 조작할 수 있습니다.
- 맞춤 HTML 태그 (
기본 PyScript 예제
최소 HTML + Python
print("Hello from Python running in the browser!")
빌드 도구 없음. 백엔드 없음. JavaScript 필요 없음.
Python으로 DOM 접근하기
Submit
from js import document
def greet(event):
name = document.getElementById("name").value
document.getElementById("output").innerText = f"Hello, {name}"
document.getElementById("btn").addEventListener("click", greet)
이것은 JavaScript DOM 조작을 그대로 반영하지만, 완전히 Python으로 작성되었습니다.
PyScript에서 Python 패키지 설치
packages = ["numpy", "pandas"]
import numpy as np
import pandas as pd
print(np.array([1, 2, 3]) * 10)
많은 과학 라이브러리가 Pyodide 덕분에 바로 사용할 수 있습니다.
브라우저에서 데이터 과학
PyScript의 가장 강력한 장점 중 하나는 클라이언트‑사이드 데이터 과학입니다.
Pandas 예제
import pandas as pd
data = {
"Language": ["Python", "JavaScript", "Rust"],
"Popularity": [95, 90, 70]
}
df = pd.DataFrame(data)
df
브라우저에서 완전히 실행됩니다—서버도 없고, API 호출도 없습니다.
PyScript vs. JavaScript
| 기능 | PyScript | JavaScript |
|---|---|---|
| 언어 | 파이썬 | 자바스크립트 |
| 브라우저‑네이티브 | 예 | 예 |
| 성능 | 보통 | 높음 |
| 생태계 | 과학, 머신러닝 | 웹‑우선 |
| 학습 곡선 | 파이썬 개발자에게 쉬움 | 표준 웹 스택 |
PyScript는 자바스크립트를 대체하는 것이 아니라, 보완적인 도구입니다.
일반적인 사용 사례
-
교육 및 학습
- 인터랙티브 파이썬 튜토리얼
- 브라우저에서 실시간 코딩 노트북
-
데이터 시각화
- 브라우저 기반 분석 대시보드
- 경량 데이터 탐색 도구
-
프로토타이핑
- 빠른 UI 및 로직 실험
- 개념 증명 애플리케이션
-
과학 출판
- 웹 문서에서 재현 가능한 연구
PyScript의 제한 사항
강력하지만, PyScript에는 제약이 있습니다:
- 네이티브 JavaScript보다 느린 실행
- 큰 초기 로드 크기 (Pyodide 런타임)
- 시스템 리소스에 대한 제한된 접근
적합하지 않은 경우:
- 고성능 게임
- 실시간 애플리케이션
- 대규모 프로덕션 프론트엔드 (아직)
PyScript 프로덕션 사용: 준비됐나요?
PyScript는 특정 사용 사례에 대해 프로덕션에 적합하며, 특히:
- 내부 도구
- 교육 플랫폼
- 데이터 기반 인터페이스
하지만 대규모 소비자 애플리케이션의 경우, 성능 및 생태계 성숙도 때문에 JavaScript 프레임워크가 여전히 우위를 점하고 있습니다.
PyScript의 미래
로드맵에는 다음이 포함됩니다:
- 더 작은 런타임 번들
- 향상된 성능 최적화
- 웹 표준과의 더 깊은 통합
- JavaScript 프레임워크와의 개선된 상호 운용성
WebAssembly가 계속 발전함에 따라, 브라우저에서 파이썬을 사용하는 것이 점점 더 실현 가능해질 것입니다.
언제 PyScript를 사용해야 할까요?
다음 경우에 PyScript를 사용하세요:
- 파이썬을 최우선으로 할 때
- 브라우저 기반 데이터 처리를 원할 때
- 인터랙티브한 교육용 또는 분석 도구를 만들 때
- 백엔드 복잡성을 최소화하고 싶을 때
다음 경우에는 피하세요:
- 초저지연이 필요할 때
- 대규모 소비자 웹 애플리케이션을 구축할 때
- JavaScript 전용 라이브러리에 크게 의존할 때
Final Thoughts
PyScript는 브라우저 로직에 대한 JavaScript의 엄격한 의존성을 없애면서 웹 개발에서 패러다임 전환을 나타냅니다. 이는 Python 개발자에게 직접적이고, 네이티브하며, 표현력 있는 방식으로 웹을 열어줍니다. JavaScript를 완전히 대체하는 것은 아니지만, 특히 교육, 데이터 과학, 빠른 프로토타이핑에 중점을 둔 Python‑centric 프로젝트에 매력적인 옵션을 제공합니다.
JavaScript를 대체하지만, 웹에서 Python으로 할 수 있는 가능성을 크게 확장합니다.