Compilador de Python online
Escribe Python 3 y ejecútalo al instante, directamente en tu navegador. Alimenta input() desde el cuadro stdin, importa numpy, pandas o matplotlib, haz clic en un traceback para ir a la línea que falla y comparte tu programa con un enlace.
Última actualización:
Python 3 se ejecuta en tu dispositivo con Pyodide (CPython compilado a WebAssembly). La primera ejecución descarga el entorno (unos 10 MB, que después quedan en caché); los imports como numpy y pandas se cargan automáticamente. Tu código nunca se sube.
Cómo usar Compilador de Python online
- Escribe o pega Python en el editor, abre un archivo .py o elige un ejemplo.
- Añade la entrada en el cuadro Entrada (stdin) si tu programa llama a input(): una línea por llamada.
- Pulsa Ejecutar código o Ctrl + Intro. La primera ejecución descarga el entorno de Python; las siguientes empiezan al instante.
- Corrige errores haciendo clic en el enlace de línea de un traceback para ir a esa línea en el editor.
- Comparte o guarda tu programa con Copiar enlace para compartir o Descargar.
Cómo funciona este compilador de Python
No hay ningún servidor detrás del botón Ejecutar. La página carga Pyodide, una versión del intérprete oficial CPython compilada a WebAssembly, dentro de un Web Worker. Tu programa se compila a bytecode de Python y lo ejecuta ese intérprete en tu propia CPU, por eso la salida aparece sin viajes de ida y vuelta por la red y por eso tu código sigue siendo privado. Cada ejecución empieza con un espacio de nombres __main__ nuevo, así que las variables de una ejecución anterior no pasan a la siguiente, mientras que los paquetes que ya cargaste se quedan en memoria y se importan al instante.
Hay dos cosas que funcionan distinto que en un terminal: input() lee del cuadro Entrada (stdin) en lugar de esperar pulsaciones de teclas, y plt.show() convierte cada figura abierta de matplotlib en una imagen en el panel de salida.
Python en el navegador frente a Python de escritorio
| Función | En este compilador | Consejo |
|---|---|---|
| Biblioteca estándar (math, re, json, datetime, collections, itertools, dataclasses, decimal, fractions) | Funciona | Mismo comportamiento que CPython 3.12 |
input() y sys.stdin | Lee el cuadro stdin | Una línea por cada llamada a input() |
| numpy, pandas, scipy, sympy, scikit-learn, matplotlib | Se carga al importar | El primer import descarga el paquete (unos pocos MB) |
Archivos con open() | Sistema de archivos en memoria | Los archivos desaparecen cuando Python se reinicia |
time.sleep() | Funciona, pero bloquea la ejecución | Cuenta para el límite de tiempo |
| threading, multiprocessing, subprocess | No disponible | Usa bucles normales o asyncio |
| requests, sockets, urllib a otros sitios | No disponible | Los navegadores no permiten sockets directos |
| Ventanas de tkinter y pygame, turtle | No disponible | Dibuja gráficos con matplotlib en su lugar |
Cómo leer un traceback de Python
Un traceback enumera las llamadas que llevaron a un error, de la más antigua a la más reciente. Léelo de abajo arriba: la última línea indica el tipo de excepción y el mensaje, por ejemplo KeyError: 'grace', y la entrada File "main.py", line N justo encima es donde se detuvo Python. Los más habituales: NameError (el nombre de una variable o función está mal escrito o se usa antes de definirlo), IndentationError (tabulaciones y espacios mezclados o falta una sangría después de dos puntos), TypeError (por ejemplo, sumar una cadena a un número: convierte con int() o str()), IndexError y KeyError (una posición de lista o clave de diccionario que no existe) y EOFError (tu programa pidió más entrada de la que contiene el cuadro stdin).
Preguntas frecuentes
¿Python es compilado o interpretado?
CPython, la implementación estándar de Python, compila tu código fuente a bytecode y luego interpreta ese bytecode en una máquina virtual. Esta herramienta ejecuta el mismo CPython, compilado a su vez a WebAssembly por el proyecto Pyodide, así que tu código se ejecuta dentro de tu navegador y no en un servidor remoto.
¿Cómo uso input() en este compilador online?
Escribe los valores que lee tu programa en el cuadro Entrada (stdin), una línea por cada llamada a input(), antes de pulsar Ejecutar. Cada llamada toma la línea siguiente y el valor se muestra después del mensaje, como en un terminal. Si el cuadro se queda sin líneas, input() lanza EOFError. sys.stdin.read() devuelve todo el cuadro.
¿Puedo usar numpy, pandas y matplotlib?
Sí. Cuando tu código importa un paquete que ofrece Pyodide, como numpy, pandas, scipy, sympy, scikit-learn o matplotlib, se descarga y se carga automáticamente antes de que se ejecute tu programa. Las figuras de matplotlib se dibujan como imágenes PNG debajo de la salida. Los paquetes con extensiones en C que Pyodide no compila, y todo lo que necesite sockets de red o hilos, no están disponibles.
¿Qué versión de Python ejecuta?
Pyodide 0.26 incluye CPython 3.12, así que funcionan los f-strings, las sentencias match, las dataclasses, las anotaciones de tipo y el resto de Python moderno. La versión exacta aparece en la barra de estado cuando el entorno se ha cargado.
¿Qué pasa si mi código tiene un bucle infinito?
Python se ejecuta en un Web Worker aparte, así que la página sigue respondiendo. Cuando una ejecución supera el límite de tiempo que elegiste (10 segundos por defecto), o pulsas Detener, el worker se cierra y Python se reinicia en la siguiente ejecución. Usa un límite mayor para cálculos largos.
¿Mi programa puede leer archivos o acceder a internet?
Tu programa tiene un sistema de archivos privado en memoria, así que open() puede escribir y leer archivos durante una ejecución, pero no puede ver los archivos de tu ordenador; en su lugar, abre un archivo .py en el editor. Los sockets, subprocess y los hilos no están disponibles en el navegador, así que bibliotecas como requests no funcionan.
¿Mi código es privado y cómo funcionan los enlaces para compartir?
El código se ejecuta por completo en tu dispositivo y nunca se sube. Un enlace para compartir guarda tu código y la entrada stdin, comprimidos, después del # de la URL; esa parte no se envía a ningún servidor. Abrir un enlace compartido carga el código, pero no lo ejecuta hasta que pulses Ejecutar.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.