PyScript แพลตฟอร์มโอเพนซอร์สสำหรับรัน Python ในเบราว์เซอร์
(pyscript.net)- PyScript เป็นแพลตฟอร์มโอเพนซอร์สที่ทำให้รันโค้ด Python ในเบราว์เซอร์ได้ จึงสามารถทำให้หน้าเว็บเองกลายเป็นสภาพแวดล้อมสำหรับรัน Python
- ชูจุดเด่นการผสานความเป็นสากลของเว็บเข้ากับอีโคซิสเต็มของ Python ทำให้ รัน Python ได้ทุกที่ที่มีเบราว์เซอร์
- เนื่องจากแอปทำงานในเบราว์เซอร์โดยไม่ต้องติดตั้งอะไรซับซ้อน จึงสามารถสร้างแอปบนเว็บได้ด้วย ไวยากรณ์ที่เรียนรู้ง่าย ของ Python
- โค้ดทำงานในเบราว์เซอร์ของผู้ใช้ ช่วยลดภาระด้านอินฟราสตรักเจอร์ราคาแพง และสามารถแชร์ผลงานผ่าน URL ของเว็บได้
- มุ่งเป้าทั้งผู้เริ่มต้นและผู้ใช้ขั้นสูง โดยมีคุณสมบัติหลักคือ ความง่าย ความสามารถในการสื่อความหมาย ความสามารถในการขยาย การแชร์ได้ ความเป็นสากล ความปลอดภัย และความทรงพลัง
สภาพแวดล้อมรัน Python ภายในเบราว์เซอร์
- PyScript เป็น แพลตฟอร์มโอเพนซอร์ส สำหรับรัน Python ในเบราว์เซอร์
- ตัวอย่างรูปแบบคือใช้
script type="py"ใน HTML เพื่อรันโค้ด Python- โค้ดตัวอย่างจะรัน
print('You can!')ภายในเอกสารของเบราว์เซอร์
- โค้ดตัวอย่างจะรัน
- ทิศทางหลักของ PyScript คือการผสานสองอีโคซิสเต็มเทคโนโลยี ได้แก่ เว็บและ Python เข้าด้วยกัน
- เว็บเป็นแพลตฟอร์มคอมพิวติ้งที่ใช้งานได้ทั่วไปทั่วโลก
- Python เป็นหนึ่งในภาษาโปรแกรมที่ได้รับความนิยมมากที่สุดในโลก
- ผลลัพธ์คือวางข้อความหลักไว้ว่า รัน Python ได้ทุกที่ที่มีเบราว์เซอร์
วิธีเริ่มต้นและคุณสมบัติของแพลตฟอร์ม
- สามารถทดลองใช้งานได้ฟรีและง่ายที่ PyScript.com
- เอกสาร รองรับทั้งผู้เริ่มต้นและผู้ใช้ขั้นสูง
- สามารถดูได้จาก แหล่งข้อมูลชุมชน ว่าสร้างอะไรได้บ้างด้วย PyScript
- เชื่อมต่อกับผู้ใช้ PyScript คนอื่น ๆ ได้ผ่าน Discord
- คุณสมบัติที่ PyScript ชูมีดังนี้
- Easy: แอปทำงานในเบราว์เซอร์โดยไม่ต้องติดตั้งอะไรซับซ้อน
- Expressive: สร้างแอปได้ด้วยภาษาที่ทรงพลัง เป็นที่นิยม และเรียนรู้ง่ายอย่าง Python
- Scalable: โค้ดทำงานในเบราว์เซอร์ของผู้ใช้ จึงไม่ต้องใช้อินฟราสตรักเจอร์ราคาแพง
- Shareable: แชร์แอปพลิเคชันผ่าน URL ของเว็บได้
- Universal: โค้ดรันได้ทุกที่ที่เบราว์เซอร์ทำงาน
- Secure: ทำงานบนแพลตฟอร์มคอมพิวติ้งที่ผ่านการพิสูจน์แล้วอย่างเบราว์เซอร์
- Powerful: ใช้ประโยชน์จากจุดแข็งของทั้งเว็บและ Python ร่วมกัน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
หากอยากดูตัวอย่างการใช้งาน สามารถดู แดชบอร์ด Panel สถิติอาชญากรรมของ Dallas ได้ที่นี่: https://crimede-coder.com/graphs/Dallas_Dashboard
ตอนเริ่มต้นใช้เวลาประมาณ 1 นาที ซึ่งรวมถึงการติดตั้งไลบรารี Python หลายตัวและการโหลดชุดข้อมูลภายนอกขนาด 5MB พอเปิดขึ้นมาแล้วก็ตอบสนองได้ค่อนข้างดี และทำงานได้ดีบน iPhone ด้วย
ผู้ให้บริการหลายรายที่ทำงานร่วมกันใช้ Tableau เวอร์ชันฟรีและอัปเดตข้อมูลด้วยมือ เพราะเวอร์ชันฟรีไม่อนุญาตให้เชื่อมต่อกับ data store โดยตรง นี่เป็นทางเลือกฟรี และตั้งค่าให้ GitHub Actions สร้างไฟล์ CSV ที่บีบอัดไว้เพื่อให้นำเข้ามาในสภาพแวดล้อม
คิดว่าการบูตสแตรป Python ให้พอรันแอป Panel ภายใน Safari บน iPad น่าจะใช้เวลานานกว่า 8 วินาทีมาก การรีเฟรชแบบ Shift ใช้เวลาประมาณ 6 วินาที
ยังสงสัยด้วยว่าเป็นปัญหาที่ต้องใช้ Python เพราะการวิเคราะห์ข้อมูล และไม่อยากรันฝั่งเซิร์ฟเวอร์เพราะค่าใช้จ่ายเซิร์ฟเวอร์หรือเปล่า
ดูหน้าแรกแล้วก็ยังงง และแม้อ่านเอกสารแล้วก็ยังไม่แน่ใจว่านี่คืออะไรกันแน่
ลองจับเล่นนิดหน่อย พบว่าเมื่อนำไปใส่ในเว็บไซต์ก็แสดง “Hello World” ได้ ดูเหมือนเป็นสคริปต์ที่หา script ที่มี
type="py"แล้วทรานส์ไพล์จาก Python เป็น JavaScript ผ่าน Pyodideแต่เดโมในหน้าแรกเป็น REPL และหัวข้อเรียกว่า “แพลตฟอร์ม” เลยยังงงอยู่
jsน่าจะ map ไปยังอ็อบเจ็กต์windowจริง และเป็น API ที่เรียกเมธอด DOM ผ่านอ็อบเจ็กต์ Proxy บางอย่างคาดหวังว่าจะรัน Python ในคอนโซลของเบราว์เซอร์ได้
สิ่งนี้ต่างจาก Pyodide อย่างไร? https://pyodide.org/en/stable/
PyScript สามารถใช้ Pyodide หรือ MicroPython ได้ และ MicroPython ก็มีขนาดเล็กพอสมควรจริง ๆ บนรันไทม์นั้น PyScript ไม่ได้แค่รันโค้ด Python เฉย ๆ แต่ยังมีฟีเจอร์อำนวยความสะดวกและการปรับปรุงคุณภาพชีวิตเพื่อให้ใช้ Python กับการเขียนโปรแกรมเว็บได้จริง
ช่วงหลังได้ขุดลึกเรื่องการใช้ PyScript เพื่อ รันแอป Python CLI ในเบราว์เซอร์
รู้สึกว่าเป็นการแฮ็กตลอดเวลา โดยเฉพาะเมื่อมี dependency เข้ามา ใช้ Pydantic 2.x ไม่ได้จนต้องสร้างคลาส wrapper สำหรับอ้อมปัญหา และแม้พยายามใส่ตรรกะทั้งหมดไว้ในไฟล์ Python แต่ก็มีฟีเจอร์ที่ขาดไปจนต้องใส่บางส่วนใน JavaScript
ถ้าต้องการวาง UI ง่าย ๆ และตรรกะ UI แบบกำหนดเองทับบนโค้ด Python ก็อาจจะโอเค แต่ Streamlit หรือ Gradio อาจเหมาะกว่า
GitHub repository: https://github.com/data-catering/data-contract-playground
เว็บไซต์: https://data-catering.github.io/data-contract-playground/
หาเคสใช้งานจริงได้ยาก หากต้องการรัน โมเดลแมชชีนเลิร์นนิง ก็สามารถ build เป็น ONNX ได้: https://onnxruntime.ai/docs/tutorials/web/
สงสัยว่าสิ่งนี้จะมีประสิทธิภาพสำหรับสร้างแอปบนเบราว์เซอร์แทน JS/TS หรือไม่
คงจะดีถ้าสามารถเขียนสคริปต์ใน Firefox เพื่อควบคุมเบราว์เซอร์ได้ เช่น ให้ประเมินผลในขั้นตอนไหนก็ได้ตามต้องการ ไม่ว่าจะเป็นตอน GET, หลังจาก GET ทั้งหมด, ก่อนหรือหลังการประเมิน JavaScript
สงสัยว่ามีเครื่องมือที่ทำแบบนี้ได้ และยังเข้าถึงความสามารถทั้งหมดของ Python จากโฮสต์ได้หรือไม่
นี่ไม่ใช่แนวคิดเดียวกับ Brython เหรอ? BRowser pYTHON: https://brython.info/
https://github.com/brython-dev/brython
https://yasoob.me/2019/05/22/running-python-in-the-browser/
ขออวดหน่อย ผมใช้ PyScript สร้าง เฟรมเวิร์กฟรอนต์เอนด์แบบ reactive ที่มีแนวคิดชัดเจนกว่า ได้แรงบันดาลใจมาจาก Vue.js เล็กน้อย: https://puepy.dev
เคยใช้สิ่งนี้ทำ Markdown renderer มาก่อน ซอร์สโค้ดแบบง่ายมากดูได้ที่นี่: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
แอปอาจทำงานได้ไม่ดีนักบนมือถือ แต่บนเดสก์ท็อปน่าจะโอเค ผมใช้โค้ดนี้ในแอปบล็อกที่เขียนด้วย Django
ไม่ว่าจะตั้งค่า WASM แบบไหน ข้อจำกัดใหญ่ที่น่ารำคาญมากคือสุดท้ายแล้วเรียก API จำนวนมากหรือ scrape เว็บไซต์ไม่ได้เพราะ CORS
แน่นอนว่า CORS สำคัญต่อการป้องกันสิ่งอย่าง XSS แต่ถ้ามีวิธีอื่นนอกจากตั้งพร็อกซีเพื่อลบ CORS ก็คงดี เพราะถ้าทำแบบนั้นก็จะเหลือ IP ที่มีโอกาสถูกบล็อกมากกว่า แทนที่จะเป็น IP ที่พักอาศัย