fbpx

6 métodos para agrupar aplicativos Python para reutilização

O desenvolvimento explosivo do Python durante a última década provou ao mundo que é um método altamente eficaz e versátil para realizar praticamente algo que você deseja fazer na computação. Também está claro que o Python, no entanto, tem apenas algumas deficiências dolorosas que não podem ser ignoradas.

Certamente uma das maiores deficiências do Python é que é árduo, geralmente irracional, pegar um programa Python que você escreveu e simplesmente entregá-lo a outra pessoa. Linguagens como C e C++, e agora Go e Rust, possuem instrumentos de construção que geram um artefato binário independente. Python, uma linguagem interpretada, requer seu tempo de execução como uma forma de fazer algo. No entanto, agrupar o tempo de execução com seu código é, na melhor das hipóteses, um processo negligente.

Normalmente, você “distribuiria” um utilitário Python fornecendo a alguém o código de fornecimento e informando métodos para organizar o tempo de execução do Python (se ainda não o tiver) e quaisquer dependências para a aplicação. Existem ferramentas que você deve usar para gerar um redistribuível autônomo (basicamente, um artefato que pode ser descompactado em um sistema sem Python e executado como está), mas no momento são todas opções ad hoc de terceiros.

A partir de 2022, ainda não havia uma maneira formal de transformar um programa Python em um produto autônomo. A boa notícia é que, dependendo do dever em questão e das pessoas envolvidas, você pode conseguir usar uma técnica extra comum para distribuir seus propósitos Python.

Este texto parece ser como em vários métodos para fornecer propósitos de Python para outros comerem. Em alguns casos, o consumidor-alvo deve configurar o tempo de execução do Python; em outros, você pode distribuir o aplicativo como autônomo.

Criar um pacote pip instalável

A utilização  pipé o método mais comum e com melhor suporte para agrupar um utilitário Python para reutilização. Basta pegar sua lista de utilitários e equipá-la com um setup.pyarquivo, que o transforma em um pippacote instalável. Qualquer pessoa pode iniciar o programa seguinte adicionando um comando à scriptslista de sua configuração Python, usando a especificação de fatores de entrada em setup.py.

Você não precisa fornecer o pacote por PyPI, ambos. Você pode hospedá-lo em um repositório Git e, a partir pip set updele, usar o git+https://url.to.repositoryformato (para repositórios hospedados na web).

Requer tempo de execução Claro.
Permite o agrupamento de conhecimento Claro, por meio do MANIFEST.in arquivo, mas normalmente é melhor considerar esse conhecimento somente leitura.
Executivos Faz uso dos mecanismos de configuração pessoal do Python. Simples de colocar em uso pip.
Contras Requer fazer um setup.pyarquivo e estudar métodos para usar a biblioteca setuptools . Além disso, se o aplicativo exigir acesso de leitura e gravação ao conhecimento, ele pode querer colocar esse conhecimento em algum lugar além da site-packageslista onde foi inserido. Qualquer comportamento fora do que é formalmente suportado por um pip set uppacote -able não pode ser tratado. pelo curso configurado de si mesmo.

Use PyInstaller, py2exe, Nuitka ou outra resolução de agrupamento

Essencialmente, o método mais útil para enviar um utilitário Python a um consumidor é fornecer a ele um executável – um único arquivo ou uma lista com um executável simplesmente reconhecido em algum lugar nele. Para fazer isso, você usaria um programa de terceiros para agrupar o aplicativo e todas as suas dependências e agrupá-lo com uma duplicata do tempo de execução.

O PyInstaller é provavelmente o programa mais conhecido desse tipo e o mais avançado. É extensível o suficiente para permitir que você agrupe os dados e os dados auxiliares e oferece muito controle sobre o pacote resultante – você pode até definir o ícone usado no executável. Outra resolução, Py2exe , funciona igualmente, embora não apresente algumas das opções de agrupamento, lembrando a capacidade de gerar um único executável de descompactação automática.

Um terceiro empreendimento, Nuitka , também cria um pacote redistribuível, mas é um total de empreendimento mais formidável. Ele converte um programa Python e suas bibliotecas relacionadas diretamente em um executável C++ com otimizações de eficiência. (No momento, essas otimizações estão em andamento.)

Mais uma solução é o pacote BeeWare , que os construtores podem usar para escrever e implantar propósitos Python em um método de plataforma cruzada .

Requer tempo de execução No.
Permite o agrupamento de conhecimento Claro, por meio de um arquivo de manifesto, que requer a configuração do manual.
Executivos Gera artefatos únicos — um pacote com um executável que pode ser descompactado e executado convenientemente. Quando realmente funciona, é sem dúvida a resolução mais útil, tanto quanto o consumidor está ansioso.
Contras Nem sempre detecta cada dependência de terceiros desejada; geralmente quer mais dicas sobre quais bibliotecas adicionar ao pacote. O resultado .exedo pacote pode ser geralmente sinalizado como falso construtivo por opções de antivírus (você pode contornar esse problema compilando o .exe.

Além disso, o PyInstaller não faz compilação cruzada. Home windows .exes só podem ser criados em home windows, e pacotes para macOS e Linux só podem ser criados nesses programas. Py2exe suporta apenas o Windows Home. Nuitka pode ser extremamente experimental porque compila Python para C++. Alguns propósitos não funcionarão com ele em nenhum aspecto.

Com BeeWare, você deve escrever o aplicativo usando as bibliotecas BeeWare para fazer este sistema funcionar em um método de plataforma cruzada. No mínimo, você gostaria de usar a biblioteca Briefcase  para agrupar um programa para fornecimento.

Use Zipapps ou Shiv

Caso seu programa contenha apenas algumas informações sem dependências externas, você pode usar um sistema de empacotamento de utilitários incluído no próprio Python: o Zipapp normal . Uma lista de informações do Python (basicamente, um módulo) será empacotada diretamente em um .pyzarquivo – um .ziparquivo -format – e entregue a outra pessoa que tenha o tempo de execução do Python. Um clique no .pyzarquivo, ou um python file.pyzcomando simples, inicia a aplicação.

A grande desvantagem do Zipapps é que ele pode não agrupar elegantemente pacotes de terceiros. Para isso, a biblioteca Shiv , criada por construtores no LinkedIn, oferece opções para mostrar .pyzinformações em arquivos de extração automática que descompactam dependências, juntamente com binários, diretamente em um subdiretório.

Requer tempo de execução Claro.
Permite o agrupamento de conhecimento Não prontamente; você deseja agrupar as informações como se fossem parte de um pacote ou incorporá-las com o zipapp em um arquivo. shivtorna isso incrementalmente mais simples.
Executivos Faz uso de mecanismos nativos do Python para agrupar aplicativos.
Contras É difícil empacotar módulos de terceiros. shiv torna possível, no entanto, ao preço de exigir que você anote uma setup.pyconfiguração para seu programa.

Hospede como um serviço de internet

Caso seu utilitário deva estar acessível apenas por meio de uma interface da Internet – ou se essa for a única forma de inscrição que você deseja conceder – você pode simplesmente hospedar o aplicativo como um serviço da Internet. Um utilitário que deve estar disponível apenas regionalmente pode ser hospedado por seus próprios servidores e talvez disponibilizado por uma conexão VPN. Um utilitário voltado para o público pode ser hospedado usando um serviço de hospedagem em nuvem de utilitário.

Caso seu utilitário Python esteja hospedado usando um livro de bolso do Jupyter , é possível configurar um servidor público (ou não menos que interno) para ele usando o JupyterHub .

Requer tempo de execução Claro, você precisará hospedar o aplicativo com um tempo de execução para que outras pessoas acessem.
Permite o agrupamento de conhecimento Claro, embora as informações devam ser incluídas manualmente no aspecto do servidor.
Executivos Pode ser acessado por uma interface de internet.
Contras O aparelho é acessível apenas por uma interface de internet. Um utilitário baseado em console, por exemplo, ou algo com uma GUI, deve ser reformulado para funcionar como um utilitário de Internet. Alguns propósitos podem não funcionar de forma eficaz quando embalados dessa maneira.

Qualquer serviço de utilidade pública pode querer ter medidas de segurança aceitáveis. Isso contém notebooks Jupyter hospedados, que têm seus próprios pontos de segurança peculiares .

Usar recipientes

Os contêineres (da seleção do Docker) se desenvolveram rapidamente em um padrão de implantação para fins do lado do servidor, com cada sistema operacional principal sendo construído para apoiá-los. Não é mais difícil “dockerizar” um utilitário Python, como um utilitário da Internet , do que construir um contêiner para muitos outros utilitários que usam algum tipo de tempo de execução.

Requer tempo de execução Não, o tempo de execução é fornecido com o contêiner.
Permite o agrupamento de conhecimento Claro, como parte do sistema usual de conhecimento em um contêiner.
Executivos É um normal amplamente utilizado.
Contras Requer a presença de uma plataforma do tipo Docker no gol; não é adequado para aplicativos de desktop.

Crie um pacote incorporável nas janelas iniciais

Os clientes de janelas domésticas têm apenas uma escolha alternativa, embora isso implique provavelmente o trabalho mais pesado de todos. Para começar, você pode obter um modelo de pacote incorporável do Python para Windows como um .ziparquivo. É uma configuração mínima e independente do Python que reside em uma única listagem, junto com a biblioteca usual. É possível colocar um utilitário Python nesta lista, juntamente com suas dependências e informações de conhecimento. Você pode configurar as dependências na lista do incorporável com pip—no entanto, observe que você deseja usar o pipda configuração Python usada para criar o aplicativo, não do próprio pacote incorporável. (Assista  a uma demonstração em vídeo  para aprender mais sobre essa ideia.)

Requer tempo de execução Não, ele vem junto com o aplicativo.
Permite o agrupamento de conhecimento Claro, embora o método seja totalmente manual.
Executivos Todas as peças são agrupadas em uma única lista.
Contras A criação manual de tal pacote é difícil e, às vezes, requer muita tentativa e erro para ser adequada.

Direitos autorais © 2022 IDG Communications, Inc.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Scroll to Top