Como criar um .EXE com arquivo .py (PYTHON) '.exe com tamanho mínimo'
Gerar executável com tamanho reduzido
Obs: Se for gerado o executavél sem os passos a seguir o sistema engloba todas as bibliotecas adicionadas no projeto, dessa forma a seguir será mais otimizado e resultará em um arquivo menor.
Acesse a pasta onde está o arquivo .py que foi salvo, atráves do prompt
Crie um ambiente virtual:
'conda create -n NOME_DO_AMBIENTE python=3.8'
Para ativar o ambiente digite:
'conda activate NOME_DO_AMBIENTE'
Para desativar digite:
'conda deactivate'
Após criar e ativar, execute o arquivo .py que foi salvo.
Nesta etapa será necessário ir instalando as bibliotecas necessarias. Basta digitar "pip install NOME_DO_ERRO_APRESENTADO" (geralmente a biblioteca faltante será mostrada na ultima linha do erro apresentado).
No fim quando o programa criado for executado sem erros, execute:
'pip install pyinstaller'
'pyinstaller --onefile NOME_PROGRAMA.py' (o termo --onefile cria somente o .exe, caso queira gerar todos os arquivos remova-os)
Será gerado um arquivo execeutável. OBS: caso tenha seu programa acesso a subpastas, é necessário mover a pasta para o mesmo local do arquivo .exe
Para listar os ambientes virtuais já criados basta digitar no prompt:
'conda env list'
Muito legal. Mas algumas dúvidas:
- 1 - O arquivo .exe gerado por este procedimento vai ter acesso às librarys instaladas/requeridas, ou ele irá instalar automaticamente? Se sim, devo colocá-las junto do mesmo (na mesma pasta)?
- 2 - Se eu quiser fazer modificações no código, devo deletar o arquivo .exe gerado e gerar um novo? Se sim, isso seria um problema em caso de servidores que hosteiam updates automáticos, não?
1- As librarys você vai baixar no ambiente virtual somente as que utilizou no código. Com isso as demais que já foram instaladas no seu ambiente principal não serão incluidas no .exe.
2- Se fizer alterações sim, é necessário realizar o procedimento, mas não todo ele. Ex: Caso adicione alguma biblioteca, será necessário realizar a instalação da mesma no ambiente virtual.
Já a segunda parte da pergunta não entendi muito bem, poderia explicar melhor?
Mais ou menos quantos Megabytes de diferença?