:Date: 24abr2009 :Version: 2.0 :Authors: - Rafael Oliveira .. contents:: Introdução ---------- Este tutorial mostra como instalar e configurar o Eclipse para desenvolver em Python. O plugin utilizado será o `PyDev Extensions`_. Após as configurações você terá uma IDE com muitas funcionalidades (dê uma olhada em `PyDev Extensions`_, 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_. 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_ 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`_ 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: 1. Vá em ``Help/Software updates.../Available Software/Add Site...``. 2. Coloque esse__ endereço. 3. Marque o checkbox ``Show only the latest versions of available software.`` 4. Selecione a versão mais nova dos pacotes do ``PyDev for Eclipse`` e ``PyDev Extensions``. 5. Clique em ``Install...``. 6. Next, next, next, finish ! __ `Pydev Updates`_ 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``. .. admonition:: 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: 1. Crie um novo projeto do tipo ``Pydev Project`` com as opções default. 2. Clique com o botão direito na pasta ``src`` e escolha ``New/Pydev Module``. 3. Escolha um nome para o módulo (ex. HelloWorld). 4. Digite: ``print 'Hello world !'`` 5. Clique com botão direito no arquivo criado e escolha ``Run as/Python run``. 6. Verifique no console se o programa foi executado corretamente. 7. Digite alguma coisa com sintaxe incorreta e veja se o pylint está acusando os erros. 8. 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: 1. Vá em ``Help/Software updates.../Available Software``. 2. Vá em ``Ganymede Update Site/Web and Java EE Development`` e selecione os plugins ``Web Developer Tools`` e ``Web Page Editor``. 3. Clique em ``Install...`` 4. 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`_. Será usada também a receita `collective.recipe.omelette`_, seguindo a sugestão do Martin Aspelli no artigo `Eclipse, PyDev and Buildout`_. 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: 1. Criar um buildout de desenvolvimento em Zope/Plone. 2. 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__.py 3. Criar um projeto Pydev no Eclipse. 4. 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. 6. 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 .. admonition:: 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: 1. 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. 2. Coloque a linha ``import pydevd;pydevd.settrace()`` no local onde você quer que a execução seja interrompida (breakpoint). Funciona exatamente como o pdb. 3. Mude para perspectiva Debug (``Window/Open Perspective``) e clique em ``Pydev/Start debug server``. 4. 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`_ você encontra uma descrição completa de todas as funcionalidades (são muitas). Referências ----------- .. _JRE: http://www.eclipse.org/downloads/moreinfo/jre.php .. _Eclipse Downloads: http://www.eclipse.org/downloads .. _PyDev Updates: http://www.fabioz.com/pydev/updates/ .. _PyLint: http://www.logilab.org/Project/name/pylint .. _PyDev Extensions: http://www.fabioz.com/pydev/ .. _Managing projects with Buildout: http://plone.org/documentation/tutorial/buildout .. _collective.recipe.omelette: http://pypi.python.org/pypi/collective.recipe.omelette .. _Eclipse, PyDev and Buildout: http://www.martinaspeli.net/articles/eclipse-pydev-and-buildout .. target-notes::