- PyScript é uma plataforma open source que permite executar código Python no navegador, transformando a própria página web em um ambiente de execução de Python
- Ao combinar a universalidade da web com o ecossistema do Python, destaca a ideia de que onde houver um navegador, será possível executar Python
- Como os apps funcionam no navegador sem instalações complexas, é possível criar aplicativos web com a sintaxe fácil de aprender do Python
- O código é executado no navegador do usuário, reduzindo a necessidade de infraestrutura cara, e os resultados podem ser compartilhados por URL na web
- O projeto mira tanto iniciantes quanto usuários avançados, tendo como características principais facilidade, expressividade, escalabilidade, compartilhamento, universalidade, segurança e poder
Ambiente de execução de Python dentro do navegador
- PyScript é uma plataforma open source para executar Python no navegador
- Um exemplo é executar código Python dentro de HTML usando
script type="py"- No código de exemplo,
print('You can!')é executado dentro do documento do navegador
- No código de exemplo,
- A direção central do PyScript é combinar dois ecossistemas tecnológicos: a web e o Python
- A web é uma plataforma de computação universal em escala global
- Python é uma das linguagens de programação mais populares do mundo
- Como resultado, a principal mensagem é que onde houver um navegador, será possível executar Python
Como começar e características da plataforma
- É possível experimentar gratuitamente e com facilidade em PyScript.com
- A documentação atende tanto iniciantes quanto usuários avançados
- Nos recursos da comunidade, é possível ver o que pode ser criado com PyScript
- Você pode se conectar com outros usuários do PyScript pelo Discord
- As características destacadas pelo PyScript são as seguintes
- Easy: os apps rodam no navegador sem instalações complexas
- Expressive: permite criar apps com uma linguagem poderosa, popular e fácil de aprender como Python
- Scalable: como o código roda no navegador do usuário, não há necessidade de infraestrutura cara
- Shareable: os aplicativos podem ser compartilhados por URL na web
- Universal: onde o navegador roda, o código também roda
- Secure: funciona sobre o navegador, uma plataforma de computação já comprovada
- Powerful: aproveita ao mesmo tempo as vantagens da web e do Python
1 comentários
Opiniões no Hacker News
Se quiser ver um exemplo de uso, há um dashboard em Panel de estatísticas de criminalidade de Dallas aqui: https://crimede-coder.com/graphs/Dallas_Dashboard
Leva cerca de 1 minuto para iniciar, incluindo a instalação de várias bibliotecas Python e o carregamento de um dataset externo de 5 MB. Depois que sobe, fica bem responsivo e também funciona bem no iPhone
Muitas empresas com as quais trabalho usam a versão gratuita do Tableau e atualizam os dados manualmente, porque a versão gratuita não permite conexão direta com repositórios de dados. Esta é uma alternativa gratuita, e deixei o GitHub Actions gerar um arquivo CSV compactado para ser importado pelo ambiente
Eu achava que inicializar Python o bastante para rodar um app Panel dentro do Safari no iPad levaria muito mais do que 8 segundos. Um refresh com Shift levou cerca de 6 segundos
Também fico pensando se o problema é que precisam de Python por causa da análise de dados e não querem rodar isso no lado do servidor por causa do custo de servidor
Fiquei confuso olhando a página inicial e, mesmo depois de ler a documentação, ainda não sei exatamente o que isto é
Mexendo um pouco por conta própria, consegui fazer um site mostrar “Hello World” ao inseri-lo. Parece um script que procura scripts com
type="py"e transpila de Python para JavaScript por meio do PyodideMas a demo da página inicial é um REPL, e o título diz “plataforma”, então continuo confuso
jsseja mapeado para o objetowindowreal e ofereça uma API para chamar métodos do DOM por meio de algum objeto ProxyEu esperava conseguir executar Python no console do navegador
Como isto é diferente do Pyodide? https://pyodide.org/en/stable/
PyScript pode usar Pyodide ou MicroPython, e o MicroPython é de fato bem pequeno. Em cima do runtime, o PyScript vai além de simplesmente executar código Python, oferecendo conveniências e melhorias de qualidade de vida para usar Python de fato em programação web
Recentemente mergulhei bastante em usar PyScript para executar apps Python de CLI no navegador
Pareceu meio gambiarra o tempo todo, especialmente quando entram dependências. Não consegui usar Pydantic 2.x, então tive que criar uma classe wrapper de contorno, e tentei colocar toda a lógica em arquivos Python, mas faltavam alguns recursos e tive que colocar parte em JavaScript
Pode ser ok quando você quer colocar uma UI simples e lógica de UI customizada por cima de código Python, mas Streamlit ou Gradio talvez sejam mais adequados
Repositório no GitHub: https://github.com/data-catering/data-contract-playground
Site: https://data-catering.github.io/data-contract-playground/
É difícil encontrar casos de uso reais. Se você quiser rodar um modelo de machine learning, pode compilá-lo para ONNX: https://onnxruntime.ai/docs/tutorials/web/
Fico pensando se isto seria eficiente para criar apps baseados no navegador em vez de JS/TS
Seria bom poder escrever scripts no Firefox para manipular o navegador. A ideia seria executar avaliações em qualquer etapa desejada, como no momento do GET, depois de todos os GETs, antes/depois da avaliação de JavaScript
Fico curioso se existe alguma ferramenta que permita fazer isso e também acessar, a partir do host, todos os recursos do Python
Isso não é o mesmo conceito do Brython? BRowser pYTHON: https://brython.info/
https://github.com/brython-dev/brython
https://yasoob.me/2019/05/22/running-python-in-the-browser/
Fazendo um pouco de autopromoção, criei com PyScript um framework de frontend reativo mais opinativo. Foi um pouco inspirado no Vue.js: https://puepy.dev
Há algum tempo, criei um renderizador de Markdown com isso. O código-fonte bem simples pode ser visto aqui: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
O app provavelmente não roda muito bem em dispositivos móveis, mas deve funcionar bem no desktop. Usei esse código em uma aplicação de blog que estava escrevendo em Django
Em qualquer configuração de WASM, a grande limitação de acabar não podendo chamar muitas APIs nem fazer scraping de sites por causa de CORS é muito incômoda
Claro que CORS é importante para impedir coisas como XSS, mas seria bom haver alguma alternativa além de criar um proxy que remove CORS. Fazendo isso, sobra um IP que não é residencial e tem maior chance de ser bloqueado