.

Traduzir

terça-feira, 15 de fevereiro de 2011

Quando a cobra bota ovo, criando e executando arquivos .egg,

Já imaginou qual seria o equivalente em python ao .jar do java?
Em python temos o arquivo .egg, que em essência é um arquivo compactado (.zip) onde estão contidos os módulos python.

O primeiro passo será criar um pacote com a seguinte estrutura.
/Trabalho/
                /MyPack/
                               /oi/
                                   __init__.py
                                   __main__.py
                /MyModules/
                                    __init__.py
                                    uai.py

O que será feito aqui é o seguinte. O arquivo __main__.py será o nosso programa principal. Ele irá usar o modulo MyModules para realizar alguma tarefa.

Comecemos pelo pacote MyModules.
O arquivo __init__.py terá a seguinte informação:

__all__=['uai'] #Lista contendo os módulos em MyModules.

Já o arquivo uai.py terá:

#!/usr/bin/env  python

def Ola(nome):
     print'Muito prazer %s, bem vindo ao ovo' %str(nome)

Já o arquivo __main__.py terá o seguinte:

#!/usr/bin/env python
from  MyModules impotr uai

nome=raw_input("Ola, qual o seu nome?")

uai.Ola(nome)

O arquivo __init__.py do que está no primeiro nível de MyPack será:

#!/usr/bin/env python
__all__=['__main__','MyModules']

Agora em uma pasta assima de MyPack iremos criar um arquivo  chamado setup.py com a seguinte informação:


#!/usr/bin/env python
from setuptools import setup

setup(name='oi',
      version='1.0',
      packages=['MyPack','MyModules'],
)

Agora via terminal, dentro dessa pasta executamos o seguinte comando:

$ python setup.py bdist_egg

Pronto, aparecerá uma pasta chamada dist que irá conter o arquivo .egg

Para executar o arquivo .egg diretamente faremos o seguinte comando:

PYTHONPATH=oi.egg python -c "from MyPack import __main__;"


E ai está. A linha de comando anterior poderá estar em um arquivo . sh, por exemplo o arquivo RodaOvo.sh:

#!/bin/bash
PYTHONPATH=oi.egg python -c "from MyPack import __main__;"

Dá-se a permissão de execução

$chomod +x RodaOvo.sh

Assim bastará digitar

$./RodaOvo.sh

Que o programa dentro do .egg será executado.

Se você criar um pacote .egg para distribuir,  a instalação se da pelo comando:

$ easy_install meuarquivo.egg


Os arquivos usado nesse exemplo podem ser baixados aqui

Nenhum comentário:

Postar um comentário