Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Distribuição Python em Windows auto-exec (aplicações Desktop)

Como distribuir aplicações Python no formato de arquivos auto-executáveis? Estou usando cx_freeze, mas alguns percalços estão impedindo a evolução. O principal é a dificuldade para gerar patches de correção e atualização. Ultimamente tenho compilado a nova versão do aplicativo com o comando

python setup.py bdist_msi

Mas não há praticidade nenhuma, uma vez que preciso manualmente remover a pasta anterior da máquina do usuário, para depois colocar ali a nova versão gerada.

Um outro problema mais recente: usando o módulo easyGUI, recebo o seguinte erro:

ImportError: DLL load failed

É frustrante, então a pergunta é: vale a pena prosseguir utilizando a linguagem, ou neste caso o melhor seria migrar para C# ou algo que seja mais voltado para ambiente Windows e menos Web (já que não tenho como disponibilizar meus scripts em um ambiente browser)?

7 respostas

Oi Alexandra, tudo bem? Essa pergunta me chamou a atenção, você cria aplicações desktop com Python?

No Windows você realmente vai ter esses problemas, Ruby também é bem ruim no Windows, mas isso tende a melhorar com as recentes atualizações do Windows com o Linux Subsystem.

No geral, se alguém me perguntasse o que usar para criar aplicações desktop eu recomendaria 3 alternativas:

  1. Aprende C# e faz com os Forms mesmos.
  2. Aprende Java e usa algo como JavaFX.
  3. Aprende Javascript e faz com tecnologias web.

Acredito que, se tratando de interfaces voltadas não só para o Windows, talvez as alternativas 2 e 3 saiam melhor.

Olá Alexandra. De fato, criar executável de certas linguagens pode não ser uma tarefa tão trivial quanto em linguagens compiladas e nativas do Windows. Dando uma googada, achei esse tutorial que parece ser bem completo (não o testei):

https://fernandofreitasalves.com/como-criar-um-executavel-com-instalador-msi-em-python-e-com-cx_freeze/

Em minha humilde opinião, esse tipo de problema não deve ser o fator decisivo para vc pensar em desistir da linguagem que vc usa. Existem diversos casos bem sucedidos de aplicativos criados em python e que instalam e executam no Windows, como o editor de texto sublime.

O que não quer dizer, claro, que eles não efrentem o mesmo problema de empacotamente e distribuição que você enfrenta ou que seja mais fácil para eles do que é para você.

Python não perde para nenhuma linguagem de programaçao no que diz respeito a facilidade de criação de interface gráfica. Não trocaria a criação de uma inteface gráfica com pyQt e QtDesigner por uma no C# com Visual Studio. Ambas as ferramentos tem facilidades incomparáveis.

Então para resumir:

1) Troque de programa para a geração de executável do seu programa python, vc pode ter experiências melhores. O erro que vc mostrou, por exemplo, parece acontecer porque na hora do empacotamento houve problema na linkagem dinânica de alguma biblioteca externa (DLL). Ou seja, alguma DLL não foi encontrada.

2) Só troque de linguagem se for estratégico para você ou sua empresa. Tipo, se a tipagem dinâmica do python estiver gerando mais problema que solução. Ou se outra linguagem tiver um suporte melhor para o tipo de problama que seu sistema se propõe a resolver, ou seus requisistos se encaixarem melhor com o suporte de outra linguagem.

Minha grande questão é q faço basicamente Web Scraping, e Python torna essa tarefa tão simples que migrar me parece um grande problema!

solução!

Sua interface é muito complexa? Uma solução seria criar uma interface em outra linguagem e modularizar a engine que faz o scraping de forma que seja possível gerenciar seu trabalho via chamadas de sistema.

A interface do sistema invocaria e encerraria os scripts e mostraria o resultado para o usuário. Seu trabalho agora seria somente de gerar o instalador e empacotá-lo junto com os scripts para essa interface e configurá-lo para ter como dependência o python.

Gerar um instalador de código C# ou C++ no Visual Studio é muito simples. Aí vc teria o melhor dos dois mundos e não precisaria gerar instalador do código python.

Acho essa integração muito válida, você faz scraping com python em algum serviço fora da aplicação desktop e na aplicação desktop você usa algo mais simples pra esse processo.

Excelente ideia! Eu consegui compilar usando o Pyinstaller 3.3 (a outra versão tbem estava bugando) mas certamente o prisma sugerido favorece o aprimoramento.

Grata!