Executando Python no seu Navegador com PyScript

Cansado de programar?

Conheça a melhor e mais completa formação de Python e Django e sinta-se um programador verdadeiramente competente. Além de Python e Django, você também vai aprender Banco de Dados, SQL, HTML, CSS, Javascript, Bootstrap e muito mais!

Quero aprender Python e Django de Verdade! Quero aprender!
Suporte

Tire suas dúvidas diretamente com o professor

Projetos práticos

Projetos práticos voltados para o mercado de trabalho

Prática profissional

Formação moderna com foco na prática profissional

Download do Artigo

Artigo atualizado em Setembro 2026: os exemplos foram reescritos para a versão atual do PyScript (2026.7.3). As tags <py-script>, <py-env> e os arquivos de pyscript.net/alpha eram da versão alpha de 2022 e não funcionam mais; agora usamos <script type="py">, configuração de pacotes via config e display(). Todos os exemplos foram testados no Chromium.

Salve salve queridos Pythonistas!

Já pensou em poder executar código Python diretamente no browser?! :scream:

Pois é, com o PyScript agora isto é possível!

O PyScript foi introduzido na PyCon US 2022 e vem chamando bastante a atenção dos amantes do Python!

E aí, será que essa moda de executar código Python diretamente no seu navegador vai pegar?

Mas primeiro, vamos aprender como podemos escrever código Python dentro de código HTML!

Faça seu cafezinho e bora nessa!

Vá Direto ao Assunto…

De onde surgiu essa ideia maluca…

Durante uma palestra na PyCon US 2022, o CEO da Anaconda, Peter Wang, revelou um projeto bastante surpreendente: o PyScript.

O PyScript é uma biblioteca JavaScript que permite aos usuários criar aplicativos Python no navegador usando uma mistura de Python e HTML padrão.

O objetivo final do projeto é permitir que um público muito mais amplo (por exemplo, desenvolvedores front-end) se beneficie do poder do Python e de suas várias bibliotecas (estatística, ML/DL, etc.).

A interface é feita com HTML comum (botões, campos de texto, divs…), e o Python consegue ler e alterar esses elementos e reagir a eventos, como um clique.

Além disso, não é necessário nos preocupar com a implantação, pois com o PyScript tudo acontecerá em navegadores da web.

Se você é Cientista de Dados, podem - por exemplo - compartilhar arquivos HTML contendo painéis, dashboards e/ou modelos com pessoas interessadas, que poderão executá-los em seus navegadores sem nenhuma configuração complicada! :wink:

PyScript é uma forma divertida de rodar Python no navegador, mas o que sustenta tudo isso continua sendo dominar bem a linguagem por trás. Se você quer construir essa base sólida, do Python ao Django, é isso que a Jornada Python ensina:

Como o PyScript funciona

PyScript é construído em cima do Pyodide, que é o próprio CPython (o interpretador Python padrão) compilado para WebAssembly. O que traz a próxima pergunta: o que é WebAssembly?

WebAssembly é a tecnologia que possibilita rodar Python (e outras linguagens) dentro do navegador. Ela usa uma linguagem de formato de texto .wat legível por humanos, que então é convertida para um formato .wasm binário que os navegadores podem executar. Graças a isso, podemos escrever código em qualquer linguagem, compilá-lo para o WebAssembly e executá-lo em um navegador da web!

Além do Pyodide (<script type="py">), o PyScript também pode usar o MicroPython (<script type="mpy">), uma implementação bem mais leve do Python: a página carrega muito mais rápido, mas bibliotecas como numpy e matplotlib só funcionam com o Pyodide.

É também aqui que entra em jogo uma potencial limitação: bibliotecas com partes em C (como numpy e pandas) só funcionam se tiverem sido compiladas para o Pyodide. Você pode encontrar a lista completa aqui. Pacotes escritos só em Python, publicados no PyPI, normalmente também podem ser instalados.

Está curtindo esse conteúdo? :thumbsup:

Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Assine as PyDicas e receba 30 dias do melhor conteúdo Python na sua Caixa de Entrada: direto e sem enrolação!

Seu primeiro código Python no Browser com o PyScript

Para começar a brincar com o PyScript, primeiro crie um arquivo index.html.

Em seguida, copie o seguinte código, que é o exemplo mais básico - o Hello World do PyScript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="https://pyscript.net/releases/2026.7.3/core.css" />
    <script type="module" src="https://pyscript.net/releases/2026.7.3/core.js"></script>
  </head>
  <body>
    <script type="py">
from pyscript import display

display("Hello, World!")
    </script>
  </body>
</html>

Como podemos ver, o código Python está embutido na tag <script type="py">. O número na URL (2026.7.3) é a versão do PyScript; a documentação oficial sempre mostra a mais recente.

Repare que usamos display() e não print(): na versão atual do PyScript, o print() vai para o console do navegador (abra as ferramentas de desenvolvedor com F12 para ver). O display() é que escreve na página.

Abra o arquivo no navegador e verá o seguinte na saída:

Primeiro código PyScript

A documentação oficial recomenda servir a pasta com o servidor embutido do Python e acessar http://localhost:8000, e isso passa a ser obrigatório quando o código fica em arquivos separados (veja mais abaixo):

1
python3 -m http.server

:bulb: Estou desenvolvendo o Ebookr.ai, uma plataforma que transforma suas ideias em ebooks profissionais usando IA - com geração de capa, infográficos e exportação em PDF. Te convido a conhecer!

Indo além :rocket:

No segundo exemplo, faremos um pouco mais!

Usaremos o numpy para gerar números provenientes da distribuição Normal Padrão e, em seguida, plotá-los usando matplotlib.

Parece mentira, mas é possível!

O código é o seguinte (a explicação vem depois):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="https://pyscript.net/releases/2026.7.3/core.css" />
    <script type="module" src="https://pyscript.net/releases/2026.7.3/core.js"></script>
  </head>
  <body>
    <h1>Histograma de uma Distribuição Padrão</h1>
    <div id="grafico"></div>
    <script type="py" config='{"packages": ["numpy", "matplotlib"]}'>
import matplotlib.pyplot as plt
import numpy as np
from pyscript import display

np.random.seed(42)

rv = np.random.standard_normal(1000)

fig, ax = plt.subplots()
ax.hist(rv, bins=30)
display(fig, target="grafico")
    </script>
  </body>
</html>

E o resultado é esse (na primeira vez, o navegador demora alguns segundos baixando o Pyodide, o numpy e o matplotlib):

Exemplo utilizando numpy

Agora, vamos explicar alguns pontos:

  • Usamos o atributo config da tag <script type="py"> para definir, em JSON, a lista de pacotes (packages) que o PyScript deve instalar antes de rodar o código
  • Indicamos onde o gráfico deve aparecer com display(fig, target="grafico"): o target é o id da <div> que vai receber a imagem. O PyScript reconhece figuras do matplotlib e as mostra como imagem PNG.

Naturalmente, conforme nosso código cresce, é interessante deixar o código HTML mais limpo. Podemos fazer isso, separando o código Python em um arquivo .py, da seguinte forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="https://pyscript.net/releases/2026.7.3/core.css" />
    <script type="module" src="https://pyscript.net/releases/2026.7.3/core.js"></script>
  </head>
  <body>
    <h1>Histograma de uma Distribuição Padrão</h1>
    <div id="grafico"></div>
    <script type="py" src="./main.py" config="./pyscript.json"></script>
  </body>
</html>

O código Python vai para o arquivo main.py, na mesma pasta do index.html:

1
2
3
4
5
6
7
8
9
10
11
import matplotlib.pyplot as plt
import numpy as np
from pyscript import display

np.random.seed(42)

rv = np.random.standard_normal(1000)

fig, ax = plt.subplots()
ax.hist(rv, bins=30)
display(fig, target="grafico")

E a configuração de pacotes vai para o arquivo pyscript.json (o nome não importa, desde que seja um arquivo JSON ou TOML):

1
2
3
{
    "packages": ["numpy", "matplotlib"]
}

Aqui o servidor local (python3 -m http.server) é obrigatório: abrindo o index.html direto do disco (file://), o navegador bloqueia por segurança (CORS) o carregamento do main.py e do pyscript.json.

Você pode encontrar diversos exemplos de uso do PyScript aqui (já em execução no navegador) e aqui (aplicações de exemplo com o código explicado, na documentação oficial).

Conclusão

É isso galera, nesse post vimos como podemos executar código Python diretamente no browser com o PyScript, abrindo um leque enorme de possibilidades!

O PyScript parece promissor, mas pode potencialmente abrir muitos novos problemas de segurança.

Se o seu objetivo é criar aplicações web completas com Python rodando no servidor, o caminho mais maduro ainda é o Django ou o FastAPI.

Se esse é o seu objetivo, o curso de Django da Jornada Python te leva do zero a aplicações web completas, com banco de dados e APIs REST.

E neste momento, também podemos ver que mesmo executar alguns scripts simples já gera uma sobrecarga significativa em termos de tempo de execução.

E aí pessoal, o que achou?! Comentem aqui embaixo, quero saber a opinião de vocês!

(Artigo original: PyScript - unleash the power of Python in your browser)

Começe agora sua Jornada na Programação!

Não deixe para amanhã o sucesso que você pode começar a construir hoje!

#newsletter Olá :wave: Curtiu o artigo? Então faça parte da nossa Newsletter! Privacidade Não se preocupe, respeitamos sua privacidade. Você pode se descadastrar a qualquer momento.