{"id":1083,"date":"2025-03-04T11:00:00","date_gmt":"2025-03-04T11:00:00","guid":{"rendered":"https:\/\/cloudlab.urv.cat\/catedracloud\/?p=1083"},"modified":"2025-03-03T08:49:05","modified_gmt":"2025-03-03T08:49:05","slug":"se-puede-ejecutar-python-en-el-navegador","status":"publish","type":"post","link":"https:\/\/cloudlab.urv.cat\/catedracloud\/2025\/03\/04\/se-puede-ejecutar-python-en-el-navegador\/","title":{"rendered":"\u00bfSe puede ejecutar Python en el navegador?"},"content":{"rendered":"\n<p>El desarrollo web est\u00e1 en plena revoluci\u00f3n. Ya no se trata solo de hacer sitios atractivos, sino de traer al navegador capacidades antes impensables. Ah\u00ed es donde entra <strong>WebAssembly<\/strong>, una tecnolog\u00eda que permite ejecutar c\u00f3digo escrito en otros lenguajes a velocidades cercanas al rendimiento nativo. \u00bfEl resultado? El desarrollo de aplicaciones web m\u00e1s r\u00e1pidas, vers\u00e1tiles que soporten funcionalidades m\u00e1s all\u00e1 del tedioso JavaScript.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-bc1952fe\"><h5 class=\"uagb-heading-text\">\u00bfQu\u00e9 es WebAssembly?<\/h5><\/div>\n\n\n\n<p>En el excelente art\u00edculo<strong> <\/strong>\u201c<a href=\"https:\/\/cloudlab.urv.cat\/catedracloud\/2025\/02\/23\/webassembly-portabilidad-sin-sacrificar-rendimiento\/\" data-type=\"link\" data-id=\"https:\/\/cloudlab.urv.cat\/catedracloud\/2025\/02\/23\/webassembly-portabilidad-sin-sacrificar-rendimiento\/\">WebAssembly: portabilidad sin sacrificar rendimiento<\/a>\u201d escrito por Pablo Gimeno, ya discutimos en profundidad qu\u00e9 es WebAssembly. Pero un resumen, nunca viene mal. As\u00ed que podr\u00edamos decir que WebAssembly es como darle <strong>superpoderes<\/strong> al navegador. Se trata de un <strong>formato binario ultrarr\u00e1pido<\/strong> que permite ejecutar c\u00f3digo casi a la velocidad de una aplicaci\u00f3n nativa, sin depender solo de JavaScript. Gracias a WebAssembly, lenguajes como <strong>C, C++, Rust e incluso Python<\/strong> pueden correr directamente en la web, ofreciendo un rendimiento brutal para tareas intensivas como gr\u00e1ficos 3D, simulaciones y an\u00e1lisis de datos.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-472363a2\"><h5 class=\"uagb-heading-text\">Pyodide: \u00a1Python Sin L\u00edmites en la Web!<\/h5><\/div>\n\n\n\n<p>Aqu\u00ed es donde la cosa se pone interesante. <a href=\"https:\/\/pyodide.org\/en\/stable\/\"><strong>Pyodide<\/strong> <\/a>es un proyecto que lleva <strong>Python al navegador utilizando WebAssembly<\/strong>, permitiendo ejecutar c\u00f3digo sin necesidad de un backend. Con \u00e9l, puedes acceder a la mayor\u00eda del ecosistema Python, incluyendo bibliotecas de ciencia de datos como NumPy, Pandas y Matplotlib. \u00bfTe imaginas hacer an\u00e1lisis de datos, visualizaci\u00f3n y c\u00e1lculos cient\u00edficos directamente en la web? \u00a1Con Pyodide es posible!<\/p>\n\n\n\n<p>\u00bfPor qu\u00e9 deber\u00edas usar Pyodide?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Python en el navegador<\/strong> sin instalaciones complicadas.<\/li>\n\n\n\n<li><strong>Acceso a bibliotecas cient\u00edficas<\/strong> para an\u00e1lisis de datos y visualizaci\u00f3n.<\/li>\n\n\n\n<li><strong>Interactividad total<\/strong>, combinando Python con JavaScript en tiempo real.<\/li>\n\n\n\n<li><strong>Despliegue simplificado<\/strong>, sin servidores ni configuraciones tediosas.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-7c81fa43\"><h5 class=\"uagb-heading-text\"><strong>\u00bfC\u00f3mo Funciona?<\/strong><\/h5><\/div>\n\n\n\n<p>Pyodide toma <strong>CPython (la implementaci\u00f3n est\u00e1ndar de Python)<\/strong> y lo convierte en un binario WebAssembly. Esto significa que puedes ejecutar scripts en Python desde cualquier navegador, sin depender de un entorno nativo. Adem\u00e1s, cuenta con APIs que facilitan la comunicaci\u00f3n entre <strong>JavaScript y Python<\/strong>, permiti\u00e9ndote construir aplicaciones web interactivas con toda la potencia de ambos lenguajes.<\/p>\n\n\n\n<p>Para aquellos a quienes les gusten los ejemplos pr\u00e1cticos, aqu\u00ed tenemos un peque\u00f1o fragmento de HTML que ejecuta la suma de dos n\u00fameros en Python:<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>&lt;!doctype html&gt;\n&lt;html&gt;\n  &lt;head&gt;\n      &lt;script src=\"https:\/\/cdn.jsdelivr.net\/pyodide\/v0.27.3\/full\/pyodide.js\"&gt;&lt;\/script&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    Pyodide test page &lt;br&gt;\n    Open your browser console to see Pyodide output\n    &lt;script type=\"text\/javascript\"&gt;\n      async function main(){\n        let pyodide = await loadPyodide();\n        console.log(pyodide.runPython(`\n            import sys\n            sys.version\n        `));\n        pyodide.runPython(\"print(1 + 2)\");\n      }\n      main();\n    &lt;\/script&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><\/code><\/pre>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-cb72f5e5\"><h5 class=\"uagb-heading-text\"><strong>Conclusi\u00f3n: \u00bfVale la Pena Pyodide?<\/strong><\/h5><\/div>\n\n\n\n<p>Definitivamente s\u00ed. Si buscas desarrollar aplicaciones interactivas sin depender de un backend y quieres aprovechar la potencia de Python en la web, <strong>Pyodide es una opci\u00f3n revolucionaria<\/strong>. A medida que WebAssembly evoluciona, veremos cada vez m\u00e1s aplicaciones aprovechando esta tecnolog\u00eda.<\/p>\n\n\n\n<p>&nbsp;\u00bfListo para probarlo? Abre tu navegador, carga Pyodide y empieza a experimentar con Python como nunca antes. \u00a1El futuro del desarrollo web ya est\u00e1 aqu\u00ed!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El desarrollo web est\u00e1 en plena revoluci\u00f3n. Ya no se trata solo de hacer sitios atractivos, sino de traer al navegador capacidades antes impensables. Ah\u00ed es donde entra WebAssembly, una tecnolog\u00eda que permite ejecutar c\u00f3digo escrito en otros lenguajes a velocidades cercanas al rendimiento nativo. \u00bfEl resultado? El desarrollo de aplicaciones web m\u00e1s r\u00e1pidas, vers\u00e1tiles [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1085,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","_swt_meta_header_display":false,"_swt_meta_footer_display":false,"_swt_meta_site_title_display":false,"_swt_meta_sticky_header":false,"_swt_meta_transparent_header":false,"footnotes":""},"categories":[49,33],"tags":[],"class_list":["post-1083","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novedades","category-webassembly"],"jetpack_featured_media_url":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide.png","uagb_featured_image_src":{"full":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide.png",853,913,false],"thumbnail":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide-150x150.png",150,150,true],"medium":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide-280x300.png",280,300,true],"medium_large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide-768x822.png",768,822,true],"large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide.png",853,913,false],"1536x1536":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide.png",853,913,false],"2048x2048":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/02\/Pyodide.png",853,913,false]},"uagb_author_info":{"display_name":"Marc S\u00e1nchez Artigas","author_link":"https:\/\/cloudlab.urv.cat\/catedracloud\/author\/msanchez\/"},"uagb_comment_info":3,"uagb_excerpt":"El desarrollo web est\u00e1 en plena revoluci\u00f3n. Ya no se trata solo de hacer sitios atractivos, sino de traer al navegador capacidades antes impensables. Ah\u00ed es donde entra WebAssembly, una tecnolog\u00eda que permite ejecutar c\u00f3digo escrito en otros lenguajes a velocidades cercanas al rendimiento nativo. \u00bfEl resultado? El desarrollo de aplicaciones web m\u00e1s r\u00e1pidas, vers\u00e1tiles&hellip;","_links":{"self":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/comments?post=1083"}],"version-history":[{"count":1,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1083\/revisions"}],"predecessor-version":[{"id":1108,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1083\/revisions\/1108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media\/1085"}],"wp:attachment":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media?parent=1083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/categories?post=1083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/tags?post=1083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}