Alguns dias atrás os desenvolvedores introduziram a primeira versão do utilitário PyOxidizer, que é oferecido como um utilitário que pode ser usado para empacotar um projeto Python como um arquivo executável separado, incluindo o interpretador Python e todas as bibliotecas e recursos necessários.
Esses arquivos podem ser executados em ambientes sem o kit de ferramentas Python instalado ou independentemente da disponibilidade da versão necessária do Python.
O PyOxidizer também pode gerar executáveis relacionados estaticamente que não estão associados às bibliotecas do sistema. O código do projeto é escrito na linguagem Rust e é distribuído sob a MPL (Mozilla Public License) 2.0.
Sobre o PyOxidizer?
O projeto é baseado no módulo de mesmo nome para a linguagem Rust, que permite a você embutir um interpretador Python em programas Rust para executar scripts Python neles.
PyOxidizer Agora, ele foi além do plug-in para Rust e está posicionado como uma ferramenta disponível para um público mais amplo para a construção e distribuição de pacotes autônomos do Python.
PyOxidizer um utilitário que visa resolver o problema de como distribuir aplicativos Python.
Para aqueles que não precisam distribuir aplicativos na forma de um arquivo executável, o PyOxidizer oferece oportunidades para gerar bibliotecas adequadas para vincular a qualquer aplicativo para incorporar o interpretador Python e o conjunto necessário de extensões neles.
A distribuição de aplicativos Python é geralmente considerada um problema não resolvido, pois Russel Keith-Magee identificou a distribuição de código como uma ameaça existencial à longevidade, para Python. Em suas palavras, Python nunca teve um histórico consistente de como eu forneço meu código para outra pessoa, especialmente se essa outra pessoa não for um desenvolvedor e apenas quiser usar meu aplicativo.
Para usuários finais, entregar um projeto na forma de um único arquivo executável Isso simplifica muito a instalação e elimina o trabalho de seleção de dependências, o que é importante, por exemplo, para projetos Python complexos, como editores de vídeo.
Por outro lado Para desenvolvedores de aplicativos, o PyOxidizer permite que economizem tempo organizando a entrega de um aplicativo sem ter que usar ferramentas diferentes para criar pacotes para sistemas operacionais diferentes.
Como funciona o PyOxidizer?
Usando as construções propostas também tem um efeito positivo no desempenho: os arquivos gerados no PyOxidizer são executados mais rapidamente do que no sistema Python, removendo importações e definindo módulos básicos.
No PyOxidizer, módulos são importados da memória (todos os módulos integrados são carregados imediatamente na memória e então usados sem acesso ao disco). Nos testes, o tempo de inicialização do aplicativo com PyOxidizer é reduzido pela metade.
A partir de projetos semelhantes existentes, é possível observar: PyInstaller (descompacta o arquivo em um diretório temporário e importa os módulos dele).
- Py2exe (vinculado à plataforma Windows e requer distribuição de vários arquivos), py2app (vinculado ao macOS)
- Cx-freeze (requer pacote de dependência separado), Shiv e PEX (forma um pacote zip e requer Python no sistema)
- Nuitka (compila o código, não o interpretador embutido), pynsist (vinculado ao Windows), PyRun (desenvolvimento proprietário sem explicação dos princípios de funcionamento).
No estágio atual de desenvolvimento, O PyOxidizer já implementou a funcionalidade principal para gerar arquivos executáveis para Windows, macOS e Linux.
Dos recursos de longo alcance notados a ausência de um ambiente de compilação padrão, a incapacidade de gerar um pacote no formato MSI, DMG e deb / rpm, com problemas de empacotamento de projeto envolvendo extensões complexas para a linguagem C.
Embora a ausência de instruções para oferecer suporte à entrega ("pyoxidizer add", "pyoxidizer analyze" e "pyoxidizer upgrade") e suporte limitado para Terminfo e Readline, falta de suporte para versões diferentes do Python 3.7, falta de suporte para compressão de recursos, incapacidade de compilação cruzada.
fonte: https://pyoxidizer.readthedocs.io