· kaynak dev.to (home feed)
PyScript, WebAssembly sayesinde tarayıcıda gerçek Python çalıştırıyor — build adımı olmadan
PyScript, WebAssembly aracılığıyla HTML sayfalarına gerçek CPython veya MicroPython gömer; çift yönlü DOM erişimi, PyPI paketleri ve Web Worker desteği sunar; herhangi bir build aracına ya da backend'e gerek yoktur.

Doğrudan HTML'e gömülü Python
dev.to'da yayımlanan bir yazıya göre PyScript, Anaconda tarafından geliştirilen ve ilk kez şirketin CEO'su Peter Wang tarafından PyCon US 2022'de tanıtılan açık kaynaklı bir platform. Geliştiricilerin Python kodunu standart script etiketleriyle HTML sayfalarına gömmesini sağlıyor ve bu kod tarayıcıda yerel olarak çalışıyor. Yazıda gösterilen kurulum, pyscript.net'ten çekilen bir stylesheet ile bir JavaScript modülünden oluşuyor; örnek 2025.11.1 sürümü üzerine kurulu. Bunların ardından, türü "py" olan bir script etiketi sayfada Python çalıştırıyor. Build adımı yok, npm install yok, bundler yok: document head'e eklenen iki etiket, Python yazmaya başlamak için yeterli.
WebAssembly'a derlenmiş iki yorumlayıcı
dev.to yazısı, PyScript'in bir transpiler ya da sözdizimi hilesi olmadığını vurguluyor: WebAssembly üzerinden çalışan gerçek Python bu ve ikisi de WASM'a derlenmiş iki yorumlayıcı mevcut.
İlki olan Pyodide, tamamen tarayıcı sandbox'ı içinde çalışacak şekilde taşınmış orijinal CPython yorumlayıcısı. Yazıya göre bu, Python'un tam standart kütüphanesini, PyPI'daki saf Python paketlerinin çoğunu ve NumPy, Pandas, Matplotlib ile Scikit-learn dahil bilimsel hesaplama yığınları için önceden derlenmiş WASM binary'lerini getiriyor. Yazı bunu, bir sayfanın içinde Matplotlib ile sinüs eğrisi çizerek gösteriyor.
İkincisi olan MicroPython, Python 3'ün hafif bir yeniden uygulaması. WASM build'i yaklaşık 170KB; yazı bunu Pyodide'den çarpıcı biçimde küçük olarak nitelendiriyor ve bu özellik onu mobil ile tablet tarayıcılarına, başlangıç süresinin önemli olduğu sayfalara ve tam CPython standart kütüphanesine ihtiyaç duymayan daha basit uygulamalara uygun kılıyor. İki yorumlayıcı da aynı foreign function interface'i uyguladığından, aralarında geçiş çoğunlukla script etiketinin type özniteliğini değiştirmekten ibaret.
Python ile sayfa arasında çift yönlü bir köprü
FFI, platformun merkezî parçası olarak sunuluyor: Python'un JavaScript'i, JavaScript'in de Python'u çağırabildiği çift yönlü bir köprü. Python kodu, document nesnesi aracılığıyla DOM'a ulaşıyor; yazı addEventListener ile kaydedilen bir click handler gösteriyor. Alternatif olarak pyscript.web içindeki daha üst düzey Pythonic bir API ve olayları CSS selector'lara bağlayan bir "when" decorator'ı da mevcut. alert, console logging ve localStorage gibi öğeleri kapsayan bir window nesnesi aracılığıyla tarayıcı API'leri açığa çıkıyor.
Köprü öbür yönde de çalışıyor. JavaScript, pyscript.interpreter.run üzerinden Python kodu çalıştırabiliyor; yazı bunu "2 + 2" dizgesini değerlendirip 4 sonucunu log'layarak gösteriyor.
Worker'lar, paketler ve hazır bileşenler
Varsayılan olarak Python tarayıcının ana thread'inde çalıştığından, CPU yoğun işler — yazının örnek verdiğiyle veri işleme, görüntü işleme ve ML çıkarımı — arayüzü dondurur. Script etiketine bir worker özniteliği eklemek, yürütmeyi her biri kendi Python yorumlayıcısına sahip bir Web Worker'a taşır ve sonuçlar PyScript'in messaging API'si üzerinden sayfaya geri akar.
Paketler, bir JSON yapılandırma özniteliği ya da pandas ve requests gibi PyPI adlarını listeleyen özel bir py-config etiketi aracılığıyla kurulur; MicroPython ise kendi paket yöneticisi mip'i kullanır. PyScript ayrıca iki etkileşimli bileşenle geliyor: sayfada canlı bir REPL render eden gömülü bir terminal ve çalıştır düğmeli, CodeMirror tabanlı bir editör; her ikisi de backend olmadan dokümantasyon, eğitim içerikleri ve öğretim araçları için tasarlanmış durumda. Platformun kendisi PolyScript adlı yalın bir çekirdek üzerine oturuyor; işlevselliğin çoğu, çekirdeği küçük tutan topluluk tabanlı bir plugin sistemiyle katmanlanıyor.
Neden önemli
Webin başlangıcından beri tarayıcıların yerel olarak çalıştırdığı tek dil JavaScript oldu; Python yalnızca bir sunucuda sayfalar hazırlayabiliyordu. WebAssembly üzerinde çalışan PyScript bu kısıtı ortadan kaldırıyor. Bilimsel yığın dahil Python ekosistemi artık kullanıcının makinesinden hiç çıkmayan veriler üzerinde istemci tarafında çalışabiliyor ve etkileşimli öğretim araçları hiçbir backend olmadan işleyebiliyor. Kalan sürtünme noktası ise payload ve başlangıç maliyeti; MicroPython'un Pyodide yanında sunulmasının nedeni tam olarak bu. Frontend geliştirme açısından, bir sekmenin JavaScript konuşması gerekliliği gevşemeye başlıyor.
- #python
- #webassembly
- #pyscript
- #browsers
- #frontend