Crie novos pacotes rapidamente com o paster
Crie novos pacotes rapidamente com o paster
Como usar o comando paster para criar novos pacotes, cujos layouts no sistema de arquivos são compatíveis com eggs e setuptools, de maneira rápida e fácil.
No Zope 2.10 (ou Zope 2.9 se você usar pythonproducts), você pode criar produtos Zope 2 que se instalam em seu $PYTHONPATH na forma de pacotes bem ordenados, em vez de utilizar o namespace plano do diretório Products/.
Tanto o Zope como o Plone estão firmemente se movendo em direção a uma maior dependência de "eggs" Python, distribuições autônomas de código e extensões que podem gerenciar suas dependências automaticamente, além de conter metadados úteis. Para ter esse suporte no seu próprio códigio, é necessário fornecer algum boilerplate (código repetitivo, clichê).
Para facilitar a criação desse boilerplate, você pode usar o ZopeSkel, um conjunto de templates doo PasteScript para o comando paster que geramboilerplate comum para o Plone.
Configuração
Para instalar o ZopeSkel, primeiramente você precisa ter o easy_install em seu sistema. Se não tem, baixe e execute o ez_setup.py. Exemplo:
$ wget peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.py
Então, para instalar o pacote ZopeSkel e suas dependências (incluindo o PasteScript), execute:
$ easy_install -U ZopeSkel
Isso irá instalar o comando paster no mesmo diretório do binário do Python. Fique de olho na saída do easy_install para conseguir encontrá-lo depois. Se o diretório não estiver em sua variável de ambiente $PATH, você provavelmente desejará definir um link simbólico para tal binário lá.
Criação de novos pacotes
Agora você será capaz de criar uma variedade de tipos de pacotes. Execute:
$ paster create --list-templates Available templates: basic_namespace: A project with a namespace package basic_package: A basic setuptools-enabled package nested_namespace: A project with two nested namespaces. paste_deploy: A web application deployed through paste.deploy plone: A Plone project plone2_theme: A Theme for Plone 2.1 & Plone 2.5 plone3_theme: A Theme for Plone 3 plone_app: A Plone App project
Para criar um pacote padrão de "nível único", execute:
$ paster create -t plone
Respondas às perguntas e você vai obter um novo diretório com o boilerplate necessário, além de alguns metadados. Da mesma forma, para um pacote de "dois níveis", como plone.app.something, (você não é obrigado a usar "plone" ou "app" é claro), você pode fazer:
$ paster create -t plone_app
Ou, se você quiser um novo tema, tente:
$ paster create -t plone3_theme
Adicione pacotes a uma instância
Você pode usar o setup.py do pacote recém-criado para instalar o seu pacote, criar e mesmo publicar pacotes no Cheeseshop ou coisas parecidas. Consulte a documentação do setuptools para obter mais detalhes.
Para aprender sobre essa forma de trabalhar, veja o tutorial do buildout.
Permita ao Zope encontrar os seus pacotes
Durante sua inicialização, o Zope lê o diretório Products/ em busca de produtos para registrar. O mesmo não ocorre com produtos e pacotes fora do diretório Products/ (o rastreamento de todo o $PYTHONPATH provavelmente não seria uma boa idéia).
Se você está criando um simples pacote Python que deseja usar a partir de algum outro pacote ou produto, você não precisa fazer nada. Ele deverá ser encontrado em tempo d execução.
Se você precisa de um produto (ou seja, se você respondeu "Yes" quando o paster perguntou "Is this a Zope 2 product?" - "Será este um produto Zope 2?") ou se você precisa carregar arquivos .zcml do Zope 3 durante a inicialização do Zope, você tem as seguintes opções:
- Coloque um slug em INSTANCE_HOME/etc/package-includes, com um nome como my.package-configure.zcml. Esse arquivo deve conter uma única linha: <include package="my.package" />. Isso fará com que o Zope encontre o pacote my.package dentro de seu $PYTHONPATH e execute o seu configure.zcml.
- Coloque uma instrução <include package="my.package" /> em um configure.zcml de qualquer produto encontrado em Products/. O Five garante que todos os arquivos .zcml de todos os produtos em Products/ sejam carregados automaticamente, e assim, por estar incluído, seu pacote será carregado também.
- Coloque uma instrução <include package"my.package" /> em etc/site.zcml, que também é lido durante a inicialização.
Para mais detalhes como gerenciar isso com zc.buildout, consulte o tutorial buildout.
