このページ内容は2022年9月9日以降、再調査・再検証してません。実際に扱う際は最新の情報にアクセスしてください。
PyScriptはブラウザ上でPythonを動かすためのフレームワークですpyscript。PyScriptはCPythonをWebAssemblyに移植したPyodideという基盤の上に構築しており、HTMLやJavaScriptの資産と組み合わせてPythonを動かすことができます。
動かし方はheadでPyScriptを読み込み、py-scriptタグ内にpythonのコードを書いて実行します。以下ではπの近似値を求めるコードですpyscript_sample1。py-scriptタグ内はPythonと同じ文法になるため、インデントも気をつける必要があります。
1<!-- index.html -->2<html lang='ja'>3<head>4<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />5<script defer src="https://pyscript.net/latest/pyscript.js"></script>6</head>7<body>8<py-script>9print("Let's compute π:")10def wallis(n):11pi = 212for i in range(1,n):13pi *= 4 * i ** 2 / (4 * i ** 2 - 1)14return pi1516pi = wallis(100000)17s = f"π is approximately {pi:.3f}"18print(s)19</py-script>20</body>21</html>
py-envタグで外部ライブラリを指定でき、NumPyやMatplotlibなどの機械学習・グラフプロットで使うライブラリも利用できますpyscript_sample2。
1<!-- index.html -->2<html lang='ja'>3<head>4<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />5<script defer src="https://pyscript.net/latest/pyscript.js"></script>6<py-env>7- numpy8- matplotlib9</py-env>10</head>1112<body>13<h1>Let's plot random numbers</h1>14<div id="plot"></div>15<py-script output="plot">16import matplotlib.pyplot as plt17import numpy as np1819x = np.random.randn(1000)20y = np.random.randn(1000)2122fig, ax = plt.subplots()23ax.scatter(x, y)24fig25</py-script>26</body>27</html>
他にもJavaScriptと連携したサンプルなども公開されてます[^pyscript_demo][^pyscript_sample_code]。