PyScript, nền tảng mã nguồn mở chạy Python trong trình duyệt
(pyscript.net)- PyScript là một nền tảng mã nguồn mở cho phép chạy mã Python trong trình duyệt, biến chính trang web thành môi trường thực thi Python
- Nền tảng này nhấn mạnh việc kết hợp tính phổ quát của web với hệ sinh thái Python, để ở đâu có trình duyệt, ở đó có thể chạy Python
- Vì ứng dụng chạy trong trình duyệt mà không cần cài đặt phức tạp, có thể tạo ứng dụng web bằng cú pháp dễ học của Python
- Mã được thực thi trong trình duyệt của người dùng, giúp giảm gánh nặng hạ tầng tốn kém, và kết quả có thể được chia sẻ qua URL trên web
- Hướng đến cả người mới bắt đầu lẫn người dùng nâng cao, với các đặc tính cốt lõi là dễ dùng, giàu khả năng biểu đạt, mở rộng tốt, dễ chia sẻ, phổ quát, an toàn và mạnh mẽ
Môi trường chạy Python trong trình duyệt
- PyScript là một nền tảng mã nguồn mở để chạy Python trong trình duyệt
- Có thể lấy ví dụ dạng chạy mã Python bằng
script type="py"trong HTML- Mã ví dụ chạy
print('You can!')ngay trong tài liệu trình duyệt
- Mã ví dụ chạy
- Hướng đi cốt lõi của PyScript là kết hợp hai hệ sinh thái công nghệ: web và Python
- Web là nền tảng điện toán phổ quát trên toàn thế giới
- Python là một trong những ngôn ngữ lập trình phổ biến nhất thế giới
- Kết quả là PyScript đưa ra thông điệp rõ ràng rằng ở đâu có trình duyệt, ở đó có thể chạy Python
Cách bắt đầu và đặc tính của nền tảng
- Có thể dùng thử miễn phí và dễ dàng tại PyScript.com
- Tài liệu hướng đến cả người mới bắt đầu lẫn người dùng nâng cao
- Có thể xem PyScript dùng để tạo ra những gì tại tài nguyên cộng đồng
- Có thể kết nối với những người dùng PyScript khác qua Discord
- Các đặc tính mà PyScript nhấn mạnh gồm:
- Easy: Ứng dụng chạy trong trình duyệt mà không cần cài đặt phức tạp
- Expressive: Có thể xây dựng ứng dụng bằng một ngôn ngữ mạnh mẽ, phổ biến và dễ học như Python
- Scalable: Mã chạy trong trình duyệt của người dùng nên không cần hạ tầng đắt đỏ
- Shareable: Có thể chia sẻ ứng dụng qua URL trên web
- Universal: Ở đâu chạy được trình duyệt thì ở đó cũng chạy được mã
- Secure: Hoạt động trên trình duyệt, một nền tảng điện toán đã được kiểm chứng
- Powerful: Tận dụng đồng thời thế mạnh của web và Python
1 bình luận
Ý kiến trên Hacker News
Nếu muốn xem ví dụ sử dụng, có thể xem dashboard Panel thống kê tội phạm Dallas tại đây: https://crimede-coder.com/graphs/Dallas_Dashboard
Mất khoảng 1 phút để khởi động, bao gồm cài đặt nhiều thư viện Python và tải một bộ dữ liệu 5MB bên ngoài. Khi đã hiện lên rồi thì phản hồi khá tốt và cũng chạy ổn trên iPhone
Nhiều công ty tôi làm việc cùng đang dùng bản miễn phí của Tableau và cập nhật dữ liệu thủ công, vì bản miễn phí không cho phép kết nối trực tiếp với kho dữ liệu. Đây là một lựa chọn thay thế miễn phí, và tôi đã cấu hình để GitHub Actions tạo file CSV nén rồi cho môi trường tải về
Tôi tưởng sẽ mất lâu hơn nhiều so với 8 giây để bootstrap đủ Python chạy một app Panel bên trong Safari trên iPad. Shift refresh mất khoảng 6 giây
Cũng tò mò liệu vấn đề có phải là cần Python cho phân tích dữ liệu, và không muốn chạy phía server vì chi phí server hay không
Xem trang chủ cũng thấy khó hiểu, và đọc tài liệu xong vẫn không rõ chính xác đây là gì
Tự thử một chút thì khi nhúng vào website, tôi có thể hiển thị “Hello World”. Nó trông như một script tìm các thẻ script có
type="py"rồi transpile từ Python sang JavaScript thông qua PyodideNhưng demo trên trang chủ lại là REPL, còn tiêu đề thì gọi là “nền tảng”, nên vẫn thấy khó hiểu
jscó lẽ được ánh xạ tới đối tượngwindowthật và cung cấp API gọi các phương thức DOM thông qua một đối tượng Proxy nào đóTôi đã kỳ vọng có thể chạy Python trong console của trình duyệt
Cái này khác Pyodide như thế nào? https://pyodide.org/en/stable/
PyScript có thể dùng Pyodide hoặc MicroPython, và MicroPython thực ra khá nhỏ. Trên nền runtime đó, PyScript không chỉ đơn giản chạy mã Python, mà còn cung cấp các tiện ích và cải thiện trải nghiệm để thật sự dùng Python cho lập trình web
Gần đây tôi đã đào khá sâu theo hướng chạy app Python CLI trong trình duyệt bằng PyScript
Suốt quá trình đều có cảm giác khá hacky, đặc biệt là khi có dependency. Tôi không dùng được Pydantic 2.x nên phải tạo các lớp wrapper để đi vòng, và dù cố đưa toàn bộ logic vào file Python, do thiếu một số tính năng nên vẫn phải đưa một phần sang JavaScript
Có thể ổn khi bạn muốn đặt một UI đơn giản và logic UI tùy chỉnh lên trên mã Python, nhưng Streamlit hoặc Gradio có lẽ phù hợp hơn
GitHub repository: https://github.com/data-catering/data-contract-playground
Website: https://data-catering.github.io/data-contract-playground/
Khó tìm được trường hợp sử dụng thực tế. Nếu muốn chạy mô hình học máy, có thể build bằng ONNX: https://onnxruntime.ai/docs/tutorials/web/
Tôi thắc mắc liệu cách này có hiệu quả để tạo app chạy trên trình duyệt thay vì JS/TS hay không
Sẽ thật tuyệt nếu có thể viết script trong Firefox để điều khiển trình duyệt. Kiểu như thực hiện đánh giá ở bất kỳ giai đoạn nào mong muốn: tại thời điểm GET, sau tất cả các GET, trước/sau khi đánh giá JavaScript
Tôi tự hỏi liệu có công cụ nào làm được việc này và cho phép truy cập mọi tính năng của Python từ host không
Đây chẳng phải là cùng khái niệm với Brython sao? BRowser pYTHON: https://brython.info/
https://github.com/brython-dev/brython
https://yasoob.me/2019/05/22/running-python-in-the-browser/
Khoe một chút thì, tôi đã dùng PyScript để tạo một framework frontend phản ứng mang tính định hướng mạnh hơn. Nó lấy một chút cảm hứng từ Vue.js: https://puepy.dev
Trước đây tôi đã làm một trình render Markdown bằng thứ này. Có thể xem mã nguồn rất đơn giản tại đây: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
Ứng dụng có lẽ chạy không tốt trên mobile, nhưng trên desktop thì ổn. Tôi đã dùng đoạn mã này trong một ứng dụng blog viết bằng Django
Với bất kỳ thiết lập WASM nào, ràng buộc lớn là cuối cùng không thể gọi nhiều API hoặc scrape website vì CORS, điều này rất phiền phức
Tất nhiên CORS quan trọng để ngăn những thứ như XSS, nhưng giá mà có cách nào khác ngoài việc dựng một proxy loại bỏ CORS. Làm vậy thì sẽ để lại một IP không phải IP dân dụng và có khả năng bị chặn cao hơn