quarta-feira, 1 de janeiro de 2025

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!!

    Nenhum comentário:

    Postar um comentário