Criando programas executáveis em Python

Pessoal,
Há 4 anos, em janeiro de 2021, falei sobre cx_Freeze. Esse programa transforma os scripts ou programas do Python em executáveis para Windows, Mac e Linux. É uma boa opção, só que encontrei algo mais completo e melhor: o Platypus!
(O verdadeiro Platypus – também conhecido como Ornitorrinco 🙂 )

Não, não é esse Platypus aí da imagem!
É uma “estrutura para computação evolutiva em Python com foco em algoritmos evolutivos multiobjetivos“.
Não sei o que isso tudo aí quer dizer, mas pra mim significa que é um programa onde eu coloco um código em Python e cospe um “.app”, um executável para Mac ou outra plataforma.
Como eu disse lá em 2021, não quer ficar fazendo isso aqui:
 >python3 teste.py
Quero que a pessoa clique no programa e que ele se pareça com algo “profissional”. Só isso!
A interface é bem simples mas a ferramenta é bem poderosa.

O que dá pra fazer aqui? App Name é o nome do seu programa. Script Type é a linguagem ou script que você vai transformar em executável. Pode ser um desses aqui abaixo:

Veja a grande variedade. Desde scripts para bash até programas em Python. Achei muito bom!!!
Em Script Path, você coloca o caminho para o seu programa.
Ainda pode definir se quer uma tela para retorno de alguma informação ou não, o ícone do programa, seu nome como autor, versão e outras coisas. Preenchido tudo, clique em “Create App” e pronto. Bem simples, não?
Mas tem alguns detalhes.
Primeiro, para instalar o Platypus pode ser clonando o projeto no GitHub deles ou pelo Homebrew (no caso do Mac):
pip install -U build setuptools
git clone https://github.com/Project-Platypus/Platypus.git
cd Platypus
python -m build
ou
brew install --cask platypus
Uma vez instalado, abra o programa e edite isso aqui:
  • Escolha o Tipo de Script: Certifique-se de selecionar “Python” como o tipo de script no Platypus.

  • Caminho do Script: No campo “Script Path”, selecione o script <seu_programa>.py que criamos.

  • Caminho do Python: Defina o caminho do Python corretamente. Se você está usando um ambiente virtual, certifique-se de apontar para o Python dentro desse ambiente. Por exemplo, se o ambiente virtual estiver em myenv, o caminho do Python pode ser algo como /path/to/myenv/bin/python3.

    Se não estiver usando um ambiente virtual, você pode usar o Python do sistema. Normalmente, o Python 3 está localizado em /usr/local/bin/python3 ou /usr/bin/python3.

  • Incluir as Bibliotecas Necessárias: Adicione as bibliotecas necessárias (yt_dlpidlelib.tooltip, etc.) na seção “Bundles Files”.

  • Verifique o Caminho do Script: Certifique-se de que o caminho do script esteja correto e que todos os arquivos necessários estejam no mesmo diretório ou em diretórios acessíveis.

  • Testar no Terminal: Para garantir que o Python está configurado corretamente, teste a execução do script no terminal.

  • /path/to/python3 /path/to/seu_programa.py
    Como colocar essas bibliotecas no programa? Simples, elas estão na pasta site_packages que está dentro do ambiente virtual do Python.
    Aqui para mim está assim:
    source /Users/castilho/myenv39/bin/activate
    cd /Users/castilho/myenv39/lib/python3.9/site-packages
    ls
    E sai isso aqui:
    Sabendo onde estão as suas bibliotecas necessárias, pode mandar para o Platypus. Eu copiei tudo pra uma pasta temporária e depois passa pro programa:
    mkdir -p /Users/castilho/temp_libs
    cp -r yt_dlp idlelib /Users/castilho/temp_libs
    No programa, em Bundled Files você adiciona as pastas das bibliotecas necessárias para o seu app rodar.
    O cx-Freeze dá pra fazer mais ou menos isso, mas a execução é pela linha de comando (gera um executável mas não é um app).
    Para o cx-freeze, achei interessante essa recomendação de uma estrutura para criar o .app:
    MyApp/
    ├── setup.py
    ├── seu_programa.py
    ├── README.txt
    Ou, em uma pasta você vai colocar três arquivos: o seu programa (em Python), um arquivo ReadMe e o setup, também em Python, que vai orientar toda a criação do programa, inclusive citando as bibliotecas necessárias para o programa funcionar standalone!
    Esse arquivo de setup é bem simples:
    import sys
    from cx_Freeze import setup, Executable

    # Inclui as bibliotecas e arquivos necessários
    build_exe_options = {
    "packages": ["tkinter", "yt_dlp", "idlelib.tooltip", "os", "threading"],
    "include_files": []
    }

    # Define o executável
    base = None

    setup(
    name = "Nome do Seu Programa",
    version = "1.0",
    description = "Aplicativo para fazer qualquer coisa",
    options = {"build_exe": build_exe_options},
    executables = [Executable("seu_programa.py", base=base)]
    )

    E para gerar o executável, faça assim:
    python setup.py build
    Para testar se seu executável está funcionando, vá até a pasta onde ele está e faça isso:
    ./seu_programa
    Eu prefiro o .app, mas essa opção também funciona bem.
    É isso!
    O primeiro de muitos posts essa ano!
    Feliz 2025!!

    Deixe um comentário

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

    Rolar para cima