Como usar o Eclipse para desenvolver em Python, especialmente Zope/Plone
Tutorial.
| Date: | 24abr2009 |
|---|---|
| Version: | 2.0 |
| Author: | Rafael Oliveira <rafaelbco@gmail.com> |
Introdução
Este tutorial mostra como instalar e configurar o Eclipse para desenvolver em Python. O plugin utilizado será o PyDev Extensions [4]. Após as configurações você terá uma IDE com muitas funcionalidades (dê uma olhada em PyDev Extensions [4], vale a pena).
Eu utilizo o Debian Testing e portanto o tutorial é baseado nesse sistema operacional. No entanto ele é genérico o bastante para ser aplicado em outros SOs.
No final há seções dedicadas ao desenvolvimento em Zope/Plone. A versão utilizada do Plone é a 3.2.2.
Pré-requisitos
Java: seu sistema deverá ter o Java 1.4 JRE ou Java5 JRE (recomendável) ou algo compatível instalado. Mais informações em JRE [1].
No Debian testing eu instalei o pacote sun-java6-jre via apt-get:
apt-get sun-java6-jre
Python: o interpretador suportado pelas versões mais recentes do Zope/Plone é o Python 2.4. Para instalá-lo no Debian:
apt-get install python-2.4
Pylint: Não é exatamente um pré-requisito, porém o PyLint [3] adiciona funcionalidades interessantes ao PyDev. Além disso o pylint pode ser utilizado separadamente. Da descrição do pacote Debian (chama-se pylint):
Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book).
Para instalá-lo:
apt-get install pylint
Download e instalação do Eclipse
Na página oficial Eclipse Downloads [2] e faça o download do Eclipse Classic. A versão atual é a 3.4.2. Existe um pacote do Eclipse disponível via apt, porém se trata de uma versão mais antiga.
No Debian Testing a instalação é feita descompactando o arquivo e movendo o diretório resultante (eclipse) para algum lugar conveniente. No meu caso eu a movi para meu diretório home:
cd /diretorio/onde/esta/o/arquivo/do/eclipse tar xvzf eclipse-SDK-3.4.2-linux-gtk.tar.gz mv eclipse ~ cd ~/eclipse ./eclipse
Ao iniciar ele perguntará onde deverá ficar o diretório workspace. Esse diretório armazenará os arquivos dos projetos criados no Eclipse.
Instalando e configurando o plugin Pydev Extensions
Instalando
É possível instalar o PyDev Extensions a partir do próprio Eclipse. Para isso você deve executar o Eclipse com um usuário com permissão de escrita no diretório de instalação do Eclipse e seguir os passos:
Configurando
Algumas configurações devem ser feitas obrigatoriamente. As demais opções podem ser exploradas depois para obter funcionalidades avançadas. Para configurar o plugin vá em Window/Preferences/Pydev. Você deve configurar o seguinte:
Interpreter - Python: Você deve adicionar o executável do seu interpretador Python. Na maioria das distribuições Linux o path é algo como /usr/bin/python2.4.
Importante
Se for usar o Eclipse para desenvolver com Zope/Plone use a versão 2.4 do Python, mesmo se houver uma versão mais nova instalada.
Pylint: escolha se você deseja usar o pylint ou não (marque em Use pylint ?). Preencha o campo "Location of pylint (lint.py)". No Debian o caminho é: /usr/share/pycentral/pylint/site-packages/pylint/lint.py. Coloque também o valor 1 em "Max process for Pylint".
Testando
Para testar se tudo está funcionando:
- Crie um novo projeto do tipo Pydev Project com as opções default.
- Clique com o botão direito na pasta src e escolha New/Pydev Module.
- Escolha um nome para o módulo (ex. HelloWorld).
- Digite: print 'Hello world !'
- Clique com botão direito no arquivo criado e escolha Run as/Python run.
- Verifique no console se o programa foi executado corretamente.
- Digite alguma coisa com sintaxe incorreta e veja se o pylint está acusando os erros.
- Digite import os. e veja se a lista de nomes exportados do módulo os aparece automaticamente.
Instalando plugins para desenvolvimento Web
Os plugins para desenvolvimento Web fornecem editores para arquivos HTML e JavaScript, com syntax highlighting, code-completion, etc. Para instalá-lo via Eclipse:
- Vá em Help/Software updates.../Available Software.
- Vá em Ganymede Update Site/Web and Java EE Development e selecione os plugins Web Developer Tools e Web Page Editor.
- Clique em Install...
- Next, next, next, finish !
Para testar crie um arquivo com extensão .html, clique como o botão direito e escolha Open With para selecionar os editores disponíveis.
Para associar as extensões de sua linguagem de template favorita (ex.: *.pt) aos editores web vá em Window/Preferences/General/Content types e associe a extensão ao tipo Text/HTML. Depois vá em General/Editors/File associations e escolha o editor padrão para a extensão.
Criando um projeto Zope/Plone
A estratégia descrita aqui depende de existir um buildout de desenvolvimento em Zope/Plone. Caso não esteja desenvolvendo usando buildout ainda, dê uma olhada em Managing projects with Buildout [5].
Será usada também a receita collective.recipe.omelette [6], seguindo a sugestão do Martin Aspelli no artigo Eclipse, PyDev and Buildout [7]. Não será abordado aqui com detalhes como trabalhar com buildouts e omelette. Caso tenha alguma dúvida consulte os links.
Os passos para criar e configurar o projeto são os seguintes:
Criar um buildout de desenvolvimento em Zope/Plone.
Criar dois omelettes:
- dev: Contém os eggs/pacotes/produtos que estão sendo desenvolvidos por você.
- 3rd: Contém os eggs/pacotes/produtos do Zope, Plone e de terceiros. É útil referenciar esses pacotes no seu projeto Eclipse para possibilitar o auto-complete e para fazer buscas no código-fonte.
Você poderia criar um omelette único, contendo todos os eggs/pacotes/produtos. Porém é mais conveniente separar os eggs/pacotes/produtos de desenvolvimento, pois fica mais fácil de navegar no Eclipse.
Como exemplo, vamos supor que você esteja desenvolvendo o egg mycompany.myegg. Modifique seu buildout.cfg para ficar dessa forma:
[buildout] parts = # ... omelette_3rd omelette_dev omelette_init # ... develop = src/mycompany.myegg [development] eggs = mycompany.myegg [thirdparty] eggs = Plone ${buildout:eggs} # ... [instance] # ... eggs = ${development:eggs} ${thirdparty:eggs} [omelette_3rd] recipe = collective.recipe.omelette location = ${buildout:directory}/parts/omellete_3rd eggs = ${thirdparty:eggs} products = packages = ${zope2:location}/lib/python . [omelette_dev] recipe = collective.recipe.omelette location = ${buildout:directory}/parts/omellete_dev eggs = ${development:eggs} products = packages = # Cria __init__.py na raiz dos omelettes para que eles sejam # reconhecidos no Eclipse como pacotes Python. [omelette_init] recipe = iw.recipe.cmd on_install = true on_update = true cmds = touch \ ${omelette_dev:location}/__init__.py \ ${omelette_3rd:location}/__init__.pyCriar um projeto Pydev no Eclipse.
Referenciar os omelettes no projeto. Vá em New/Folder, clique em Advanced, selecione Link to folder in the filesystem e clique em Browse... para selecionar o omelette. Faça isso para ambos os omelettes.
- Adicionar os omelettes ao PYTHONPATH. Vá em Project/Properties/Pydev - PYTHONPATH/Add source folder e selecione o omelette. Faça isso para ambos os omelettes.
Fazendo isso você terá um projeto com todo o código necessário no PYTHONPATH. Isso possibilitará o auto-complete e fazer buscas no código fonte com rapidez.
Controlando a instância Zope através do Eclipse
Você pode criar um "launcher" para a instância Zope. Para isso vá em Run/External tools/External tools configuration. Crie uma configuração do tipo Program para executar o script runzope de sua instância Zope. Geralmente esse script fica em:
/caminho/do/buildout/parts/instance/bin/runzope
Importante
Teoricamente um launcher para instance fg também deveria funcionar. Porém quando se tenta parar o launcher o processo do Zope continua vivo. Por isso é recomendável usar apenas o runzope.
Agora é possível disparar o Zope indo em Run/External tools, ver as mensagens de debug pela view Console do Eclipse e pará-la através do comando stop.
Usando o debugger gráfico do PyDev com Zope
O PyDev possui um excelente debugger gráfico. A utilização com projetos python "stand-alone" é trivial. Para utilizá-lo com o Zope, no entanto, são necessárias algumas configurações:
Edite o script runzope de sua instância Zope. Edite a variável PYTHONPATH incluindo o caminho para o pacote Python do Pydev, por exemplo:
PYTHONPATH="/home/...:$SOFTWARE_HOME:$PYTHONPATH":/caminho/do/eclipse/plugins/org.python.pydev.debug_1.4.5.2727/pysrc
O path exato a ser adicionado depende do local onde o eclipse está instalado e da versão do Pydev.
Coloque a linha import pydevd;pydevd.settrace() no local onde você quer que a execução seja interrompida (breakpoint). Funciona exatamente como o pdb.
Mude para perspectiva Debug (Window/Open Perspective) e clique em Pydev/Start debug server.
Inicie sua instância Zope.
Agora quando os comandos import pydevd;pydevd.settrace() forem executados a execução será parada e você poderá depurar seu código utilizando o Eclipse. É possível avançar linha-por-linha, verificar valores de variáveis, etc.
Conclusão
Agora você tem uma IDE python completa. Em PyDev Extensions [4] você encontra uma descrição completa de todas as funcionalidades (são muitas).
Referências
| [1] | http://www.eclipse.org/downloads/moreinfo/jre.php |
| [2] | http://www.eclipse.org/downloads |
| [3] | http://www.logilab.org/Project/name/pylint |
| [4] | (1, 2, 3) http://www.fabioz.com/pydev/ |
| [5] | http://plone.org/documentation/tutorial/buildout |
| [6] | http://pypi.python.org/pypi/collective.recipe.omelette |
| [7] | http://www.martinaspeli.net/articles/eclipse-pydev-and-buildout |
| [8] | http://www.fabioz.com/pydev/updates/ |
Recipe para automatizar criação de projeto no Eclipse
Automatiza uma boa parte desse tutorial.
Python Eclipse
Este tutorial me ajudou muito.
Obrigado!
[]'s
Obrigado
Obrigado colega. Consegui instalar no meu Debian Unstable para trabalhar com java.
[]s Jean - São Carlos
Sugestões e correções são bem vindas.
Sugestões e correções são bem vindas.