E Ai pessoal,
Devido
a um post bem
movimentado de Italo e a minha ausencia no encontro de python, venho aqui fazer um tutorial exemplo de como
construir executaveis usando Cx_Freeze.
Vamos aprender sobre
Cx_Freeze, um conjunto multi-plataforma de scripts criados para
"congelar" os scripts Python em executáveis de forma
semelhante ao py2exe, PyInstaller, etc. Vamos congelar um script de
console e um script com interface grafica (ou seja GUI). Se
você não tiver o cx_freeze instalado ainda, você pode
obter-lo aqui.
Na documentaçao do Cx_Freeze estao listadas três maneiras de construir executaveis.
Usar o proprio cx_freeze para construir. Ex: cxfreeze mon_script.py --target-dir dirName
Criar um script de instalação distutils (estilo py2exe), que você pode salvar para uso futuro
Configurar cx_freeze internamente. *Nao cobrirei essa forma de construçao aqui nesse tutorial*
Agora paremos a conversa e vamos começar a codar, não é?
[MANEIRA 1]
Usando
o proprio cx_freeze para construir o objeto é bem simples, uma linha
de codigo no terminal e ta pronto. ;)
Primeiramente vou criar o
mais simples dos scripts python, o famoso Hello World,
aqui chamado Hello Cx_Freeze.
#!/usr/bin/env python
import sys
print "Hello Cx_Freeze"
sys.stdin.read(1) # Espera input do utilizator para evitar o fechamento do console em windowsSalve o script com o nome debut_console.py
Agora abrimos o terminal e acessamos o diretorio do script e lançamos o codigo: cxfreeze debut_console.py --target-dir exeDir
Um diretorio com o nome exeDir sera criado. acessamos o diretorio: cd exeDir e executamos: ./debut_console
O output sera:
Hello Cx_Freeze
Facil nao é? :D
[MANEIRA 2]
Aqui
nos vamos codar um script com uma interface grafica, alem disso
iremos codar um distutils script
para a construçao personalizada do nosso objeto.
Primeiramente
vamos fazer o script do programa o programa usa a biblioteca de
widgets wx, obtenha ela aqui:
#!/usr/bin/env python
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(400,300))
self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
self.Show(True)
app = wx.App(False)
frame = MyFrame(None, 'Janela Exemplo')
app.MainLoop()
Salve o script com o nome debut.pyw
E vamos agora escrever nosso script distutils:
from cx_Freeze import setup, Executable
exe = Executable(
script="debut.pyw",
#base="Win32GUI", # Retirar comentario se for contruir um executavel para windows
)
setup(
name = "PugPeExemplo",
version = "0.0.1",
description = "Um Exemplo de Cx_Freeze",
executables = [exe]
)
Salve o script com o nome setup.py (Como indica o comentario no codigo acima se a plataforma a ser executada for Windows retire o comentario)
Entao no terminal ja no diretorio dos scripts, use o seguinte comando: python setup.py build
Um
diretorio chamado build sera criado, acessando o
diretorio voce vera todos os arquivos incluido DLLs/Libs e o
executavel.
Uma boa maneira de aprender as varias outras
opções que podem ser usadas com Cx_Freeze é usar GUI2Exe para
gerar os arquivos setup.py para nós. A documentação no site
Cx_Freeze mostra as outras opções a classe Executable toma.
[Resumindo]
Como voces podem ver nao é tao complicado assim construir um executavel usando Cx_Freeze.
Porém atençao, voce pode escrever o programa em qualquer plataforma, o grande problema so é na hora de usar bibliotecas, as DLLs do Windows nao existem em outros sistemas, o que impossibilita a construçao de um executavel para windows no linux por exemplo. Mesmo usando um ambiente python instalado no Wine pode gerar problemas. Para isso você deve construir o programa no windows lembrando de instalar python e as dependencias necessarias à execuçao do programa e so é começar os experimentos. :P
Se tiver algum problema ainda com cx_freeze deixa um post aqui que a gente conversa. :D
Abraço à todos,
Marc
PS: Uploadei os exemplos assim como o tutorial em PDF pra quem quiser ler offline. Desculpem-me às falhas de pontuaçao em algumas palavras do texto, o meu teclado nao suporta alguns caracteres do português.
[Downloads]
Exemplo1: http://ubuntuone.com/1adzzxYaVNJ0u3KUo45Bny
Exemplo2: http://ubuntuone.com/0BEAAoDZcEQ5r2ZmlbvfBw
Exemplo3: http://ubuntuone.com/32y32jrRyU85uZtkg20y7u
TutorialPDF: http://ubuntuone.com/68NMapBXeXHpOSXcUE9Rjp
--
Você está recebendo esta mensagem porque se inscreveu no grupo "pug-pe" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para pug...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para pug-pe+un...@googlegroups.com.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/pug-pe/-/JwOmoOt9puMJ.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para pug-pe+un...@googlegroups.com.