Gerando executavel - Python 2.7

130 views
Skip to first unread message

Rodrigo Augusto Martins

unread,
Jan 11, 2018, 10:51:50 AM1/11/18
to PUG-MG
Prezados,


        Boa Tarde!!, estou com dificuldades para gerar o arquivo EXE do meu programa Python , ja tentei diveros tutoriais e nao tive sucesso, segue abaixo o meu ambiente 

Sistema operacional Windows 8.1
Anaconda 2  (Estou desenvolvendo no Jupyter Notebook ) 
Python 2.7 (Tive que usar esta versao devido a problemas com uma aplicação que estava desenvolvendo)

Instalei para tentar gerar o Executavel o pyexe e o PyInstaller , segui varios tutoriais porem sem sucesso. 

O Meu aplicativo tem interface grafica e estou usando o tkinter , outro detalhe e que tenho 2 arquivos porque um eu estou usando para armazenar as classes e chamo elas pelo aplicativo principal pelo import, ja tentei em arquivo unico sem sucesso, a aplicação esta funcionando 100%.


Codigo do arquivo principal  [interface.py]
# coding: utf-8

from Tkinter import *
from tkFileDialog import askopenfilename
from compactador import *
import tkMessageBox
from threading import Thread

class Aplicacao:
   def __init__(self, master):
       self.frame = Frame(master)
       self.frame.pack()
       
       self.botao_adicionar = Button(self.frame)
       self.botao_adicionar["text"] = "Adicionar"
       self.botao_adicionar["command"] = self.adicionar
       self.botao_adicionar["bd"] = 3
       self.botao_adicionar["font"] = ("Arial", 12)
       self.botao_adicionar.pack(pady=10, padx=30, side="left")
       
       self.botao_deletar = Button(self.frame)
       self.botao_deletar["text"] = "Deletar"
       self.botao_deletar["command"] = self.deletar
       self.botao_deletar["bd"] = 3
       self.botao_deletar["font"] = ("Arial", 12)
       self.botao_deletar.pack(padx=30, side="right")
       
        self.frame2 = Frame(master)
       self.frame2.pack()
       
       self.sby = Scrollbar(self.frame2)
       self.sby.pack(side=RIGHT, fill= Y)
       
       self.sbx = Scrollbar(self.frame2, orient=HORIZONTAL)
       self.sbx.pack(side=BOTTOM, fill=X)
       
       self.listbox = Listbox(self.frame2, width=60, height=20, selectmode = EXTENDED)
       self.listbox.pack()
       
       self.listbox.config(yscrollcommand=self.sby.set)
       self.sby.config(command=self.listbox.yview)
       self.listbox.config(xscrollcommand=self.sbx.set)
       self.sbx.config(command=self.listbox.xview)
       
       self.frame3 = Frame(master)
       self.frame3.pack()
       self.botao_compactar = Button(self.frame3)
       self.botao_compactar["text"] = "Compactar"
       self.botao_compactar["command"] = self.compactar
       self.botao_compactar["bd"] = 3
       self.botao_compactar["font"] = ("Arial", 12)
       self.botao_compactar.pack(pady=10)
       
   def adicionar(self):
       nome_arquivo = askopenfilename()
       if nome_arquivo != "" :
              self.listbox.insert(END, nome_arquivo)


    def deletar(self):
       items = self.listbox.curselection()
       if len(items) ==0:
           tkMessageBox.showinfo("Compactador", "Selecione pelo menos um item")

        else:
           pos = 0
            for i in items:
               item_pos = int(i) - pos
               self.listbox.delete(item_pos, item_pos)
               pos = pos + 1

    def compactar(self):
       lista_arquivos = self.listbox.get(0, END)
       if len(lista_arquivos) == 0:
           tkMessageBox.showinfo("Compactador","Adicione arquivos para serem compactados")
           return
       
       def executar():
           self.botao_compactar.configure(state=DISABLED)
           compactador = Compactador()
           compactador.compactar(lista_arquivos)
           self.botao_compactar.configure(state=NORMAL)
       t = Thread(target=executar)
       t.start()
               
               
               
root = Tk()
root.title("Compactador de Arquivos")
root.iconbitmap(default="icone.ico")
root.geometry("600x500")
root.resizable(width = FALSE, height = FALSE)
Aplicacao(root)
root.mainloop()


este e o arquivo que estou usando para importar a minha classe de compactação [compactador.py]

# -*- coding: utf-8 -*-


import zipfile 
import os.path 

class Compactador:
def compactar(self, lista_arquivos):
arquivo_zip = zipfile.ZipFile("arquivo.zip", "w")
for arquivo in lista_arquivos:
if(os.path.isfile(arquivo) and os.path.exists(arquivo)):
base = os.path.basename(arquivo)
arquivo_zip.write(arquivo, base)
arquivo_zip.close() 



Poderiam me ajudar?

Luiz Henrique Freitas Rodrigues Araújo

unread,
Jan 11, 2018, 11:20:22 AM1/11/18
to pyth...@googlegroups.com
Você está usando bibliotecas externas certo?
Talvez não seria necessário adiciona-las? 

Lembro que em um projeto onde utilizava QT, precisei informar o path onde estava localizado o QT para que ele adicionasse a lib.


--

---
Você recebeu essa mensagem porque está inscrito no grupo "PUG-MG" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-mg+unsubscribe@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/python-mg.
Para mais opções, acesse https://groups.google.com/d/optout.

Rodrigo Augusto Martins

unread,
Jan 11, 2018, 12:35:42 PM1/11/18
to pyth...@googlegroups.com
Eu testei tambem com um codigo simples apenas abrir uma Tela GUI nem isso funcionou. 
Em 11 de janeiro de 2018 14:20, Luiz Henrique Freitas Rodrigues Araújo <lui...@gmail.com> escreveu:
Você está usando bibliotecas externas certo?
Talvez não seria necessário adiciona-las? 

Lembro que em um projeto onde utilizava QT, precisei informar o path onde estava localizado o QT para que ele adicionasse a lib.

--

---
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "PUG-MG" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/python-mg/tK7QdyOSliQ/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para python-mg+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages