Criando um Python Egg

Republicado de Tiveron

Criando um Python Egg

Agora que sabemos o que são eggs e como instalá-los, vou explicar como criamos um egg =)

Cenário:

Vamos tomar um exemplo prático para ilustrar a criação desse egg. Eu tenho uma lib chamada uweather que nada mais é que um parser que gera dados sobre previsão do tempo do site weather.com. E ele está na seguinte estrutura de arquivos:

README

uweather

examples

setup.py

Onde README é o arquivo de leitura, uweather onde ficam os arquivos da lib, examples onde ficam os exemplos(dããã)  e setup.py…. hmmmm setup.py?

Criando o egg:

o arquivo setup.py é justamente o responsável pelo empacotamento e meta-informações da sua lib, vamos ver a estrutura básica desse arquivo:

setup(
    name ='nome da lib',
    version='0.1',
    description='descricao da sua lib',
    author='seu nome',
    author_email='seu@email.com',
    url='http://seu.site/lib',
    packages=['nome_do_pacote'])
    long_description="""\
        descricao completa sobre sua lib
    """,
    classifiers=[
        "lista de classificadores da sua lib",
    ],
    keywords='palavras chave separadas por espaço',
    license='tipo da licensa ex: GPL',
    install_requires=[
        'setuptools',
    ],
 )

A lista de classificadores pode ser encontrada aqui.

Esta é a estrutura do setup.py, ela contém meta-informações como nome, versão, informações do autor, classificadores, palavras chave, dependências e outras informações que serão utilizadas quando alguém fizer uma busca pelo easy_install ou pip.

Agora para criar o egg, basta executar o seguinte comando

python setup.py bdist_egg

Ele irá criar o pacote egg em uma pasta chamada ‘dist’ no formato:

nome_do_pacote-versao-versao_python

algo como:

nome_do_pacote-0.1-py2.6

(supondo que a versão do python instalada é a 2.6)

Se você descompactar o egg, vai ver que o conteúdo será o da pasta da lib, no caso ‘uweather’ mais  uma nova pasta chamada ‘EGG_INFO’ que contém as meta-informações de sua lib.

Também serão incluídos os arquivos .pyc, que  são os arquivos .py compilados, os binários.

Com isso, seu arquivo egg agora pode ser distrubuído =)

Distribuindo o seu egg:

Você pode distribuir seu pacote do jeito que bem entender, mas é recomendável utilizar o PyPi, que é o repositório oficial de pacotes python.

Para poder fazer um upload do seu pacote no PyPi, é necessaria a criação de uma conta no site e configurar o arquivo .pypirc no seu diretório HOME.

O arquivo .pypirc segue o seguinte padrão:

[pypirc]
servers = pypi
[server-login]
username:seu_username
password:seu_password

Após feito, é possivel gerar o egg e fazer upload do mesmo pelo comando:

python setup.py bdist_egg upload --identity="Seu Nome" --sign --quiet

Pronto! Agora você tem um pacote egg gerado e indexado no repositório oficial de pacotes python =)

Comentários