1
resposta

[Projeto] Script python não funciona em outros computadores

Olá, estou com uma dúvida. Estava estudando frontend e decidi criar uma interface para um programa em Python que estou desenvolvendo. A interface e o programa funcionam muito bem, porém estou enfrentando um problema ao tentar transformar esse arquivo em um executável. A aplicação não funciona em outras máquinas que não possuem o Python instalado; ela apenas abre o frontend, mas não consegue executar as funções programadas no backend. Já tentei usar o PyInstaller e o cx_Freeze, mas nenhum dos dois funcionou. segue setup.py do cx_freeze:

from cx_Freeze import setup, Executable

build_exe_options = {
    "packages": ["os", "sys", "pandas", "webbrowser", "pyautogui", "time", "customtkinter", "PIL", "tkinter"],
    "include_files": [
        (r"C:\Users\gungu\OneDrive\Área de Trabalho\Codes\WhatBot\images\refresh_24dp_FILL0_wght400_GRAD0_opsz24.png"),
        (r"C:\Users\gungu\OneDrive\Área de Trabalho\Codes\WhatBot\images\menu_24dp_FILL0_wght400_GRAD0_opsz24.png"),
        (r"C:\Users\gungu\OneDrive\Área de Trabalho\Codes\WhatBot\images\precision_manufacturing_24dp_FILL0_wght400_GRAD0_opsz24.png")
    ]
}

base = 'gui'

executables = [
    Executable('projeto.py', base=base, target_name='projeto1')
]

setup(name='Projeto',
      version='1',
      description='',
      options={'build_exe': build_exe_options},
      executables=executables)
1 resposta

Olá, Gustavo.

Tudo bem?

É importante garantir que todas as dependências e arquivos necessários estão sendo incluídos corretamente no executável. Aqui estão algumas sugestões que podem ajudar:

  1. Verifique as dependências: Certifique-se de que todas as bibliotecas necessárias estão listadas em build_exe_options["packages"]. Às vezes, bibliotecas adicionais podem ser necessárias e não estão explicitamente mencionadas.

  2. Inclua arquivos de dados: Além das bibliotecas, você também precisa garantir que todos os arquivos de dados (como imagens) estão sendo incluídos corretamente. O caminho para esses arquivos deve ser relativo ao script, não absoluto.

  3. Base correta: Para interfaces gráficas, o base deve ser 'Win32GUI' em vez de 'gui'. Isso evita que uma janela de console seja aberta junto com a interface gráfica.

  4. Teste o executável em um ambiente limpo: Tente executar o arquivo em um ambiente que não tenha o Python instalado, como uma máquina virtual ou um computador diferente, para simular o ambiente dos usuários finais.

Aqui está uma versão ajustada do seu setup.py:

from cx_Freeze import setup, Executable

build_exe_options = {
    "packages": ["os", "sys", "pandas", "webbrowser", "pyautogui", "time", "customtkinter", "PIL", "tkinter"],
    "include_files": [
        ("images/refresh_24dp_FILL0_wght400_GRAD0_opsz24.png", "images/refresh_24dp_FILL0_wght400_GRAD0_opsz24.png"),
        ("images/menu_24dp_FILL0_wght400_GRAD0_opsz24.png", "images/menu_24dp_FILL0_wght400_GRAD0_opsz24.png"),
        ("images/precision_manufacturing_24dp_FILL0_wght400_GRAD0_opsz24.png", "images/precision_manufacturing_24dp_FILL0_wght400_GRAD0_opsz24.png")
    ]
}

base = 'Win32GUI'  # Para aplicações com interface gráfica

executables = [
    Executable('projeto.py', base=base, target_name='projeto1')
]

setup(name='Projeto',
      version='1',
      description='',
      options={'build_exe': build_exe_options},
      executables=executables)

Certifique-se de ajustar os caminhos das imagens para serem relativos ao script, e não absolutos, para que funcionem em qualquer máquina.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.