primeira versão da utilidade , que permite empacotar projetos em Python em um arquivo executável independente, incluindo o interpretador Python e todas as bibliotecas e recursos necessários para a execução. Esses arquivos podem ser executados em ambientes sem a ferramenta Python instalada ou independentemente da versão necessária do Python. O PyOxidizer também pode gerar arquivos executáveis vinculados estaticamente, que não estão ligados às bibliotecas do sistema. O código do projeto é escrito em Rust e sob a licença MPL (Mozilla Public License) 2.0.
O projeto é baseado no módulo homônimo para Rust, que permite incorporar o interpretador Python em programas Rust para executar scripts Python. O PyOxidizer agora ultrapassou a função de um complemento para Rust e se posiciona como uma ferramenta acessível para uma audiência mais ampla, permitindo a criação e distribuição de pacotes autossuficientes com Python. Para aqueles que não precisam distribuir aplicativos como arquivos executáveis, o PyOxidizer oferece a capacidade de gerar bibliotecas que podem ser vinculadas a qualquer aplicativo para incorporar o interpretador Python e o conjunto necessário de extensões.
Para os usuários finais, a entrega do projeto em um único arquivo executável simplifica significativamente a instalação e elimina a necessidade de resolver dependências, algo particularmente relevante para projetos complexos em Python, como editores de vídeo. Para os desenvolvedores de aplicativos, o PyOxidizer permite economizar tempo na logística de entrega do aplicativo, sem a necessidade de usar diferentes ferramentas para criar pacotes para diferentes sistemas operacionais.
O uso das compilações propostas também tem um impacto positivo no desempenho — os arquivos gerados pelo PyOxidizer são executados mais rapidamente do que ao usar o Python do sistema, devido à eliminação da importação e definição de módulos básicos. No PyOxidizer, os módulos são importados da memória — todos os módulos incorporados são carregados na memória de imediato e, em seguida, utilizados sem acessar o disco. Em testes, o tempo de inicialização do aplicativo ao usar o PyOxidizer é reduzido pela metade.
Entre os projetos semelhantes existentes, podemos destacar: (extrai o arquivo para um diretório temporário e importa os módulos dele), (ligado à plataforma Windows e requer a distribuição de vários arquivos), (ligado ao macOS), (requer empacotamento de dependências separadas), e (forma um pacote no formato zip e requer a presença do Python no sistema), (compila o código, em vez de embutir o interpretador), (ligado ao Windows), (desenvolvimento proprietário sem explicação dos princípios de funcionamento).
Na atual fase de desenvolvimento, o PyOxidizer já implementou a funcionalidade básica para gerar arquivos executáveis para Windows, macOS e Linux. Entre as funcionalidades ainda não disponíveis, destacam-se a ausência de um ambiente de construção padrão, a impossibilidade de gerar pacotes nos formatos MSI, DMG e deb/rpm, problemas com o empacotamento de projetos que incluem extensões complexas em C, a falta de comandos para suporte de entrega (como «pyoxidizer add», «pyoxidizer analyze» e «pyoxidizer upgrade»), suporte limitado para Terminfo e Readline, ausência de suporte para versões diferentes do Python 3.7, falta de suporte para compressão de recursos e a impossibilidade de cross-compilation.
Fonte: opennet.ru
