Embora cada programador tem seu editor de Texto/IDE preferido, aqui estão algumas recomendações para configurar o IDE populares para escrever e depurar plugins QGIS Python.
No Linux não há nenhuma configuração adicional necessária para desenvolver plugins. Mas no Windows, você precisa ter certeza de que você tem as mesmas configurações de ambiente e utilizar as mesmas bibliotecas e interpretador como QGIS. A maneira mais rápida de fazer isso, é modificar o arquivo de lote de inicialização do QGIS.
Se você usou o instalador OSGeo4Wr, você pode encontrá-lo na pasta de arquivos binários da nstalação OSGoeW. Procure por algo como C:\OSGeo4W\bin\qgis-unstable.bat.
Para usar Pyscripter IDE, eis o que tem de fazer:
Faça uma cópia do qgis-unstable.bat e renomeie para pyscripter.bat.
Abra-o em um editor. E remova a última linha, a que inicia o QGIS.
Adicione uma linha que aponta para o seu executável PyScripter e adicione o argumento de linha de comando que define a versão do Python a ser usada (2,7 no caso de QGIS 2.0)
Além disso, adicione o argumento de que aponta para a pasta onde PyScripter encontrará a dll Python usado pelo QGIS, você pode encontrá-la na pasta de arquivos binários da instalação OSGeoW
@echo off
SET OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\bin\gdal16.bat
@echo off
path %PATH%;%GISBASE%\bin
Start C:\pyscripter\pyscripter.exe --python25 --pythondllpath=C:\OSGeo4W\bin
Agora, quando você clicar duas vezes neste arquivo de lote, vai iniciar PyScripter, com o caminho correto.
Mais popular que PyScripter, Eclipse é uma escolha comum entre os desenvolvedores. Nas seções seguintes, estaremos explicando como configurá-lo para desenvolver e testar plugins. Para preparar seu ambiente para usar o Eclipse no Windows, você também deve criar um arquivo de lote e usá-lo para iniciar o Eclipse.
Para crar um arquivo de lote, siga os seguintes passos:
Localize a pasta onde o arquivo:qgis_core.dll está Normalmente isto é C:OSGeo4Wappsqgisbin, mas se você compilou o seu próprio aplicativo QGIS, este está na sua pasta de compilação em output/bin/RelWithDebInfo
Localize seu executável eclipse.exe.
Crie o seguinte script e use para iniciar eclipse quando estiver desenvolvendo plugins QGIS.
call "C:\OSGeo4W\bin\o4w_env.bat"
set PATH=%PATH%;C:\path\to\your\qgis_core.dll\parent\folder
C:\path\to\your\eclipse.exe
Para usar Eclipse, certifique-se que tem instalado o seguinte:
Plugin Aptana Eclipse ou PyDev
Existe alguma preparação que deve ser feita no próprio QGIS. Dois plugins são de interessantes: Remote Debug e Plugin reloader.
Ir para Plugins ‣ Fetch python plugins
Pesquise por Remote Debug (no momento ainda é experimental, então habilite os plugins experimentais sob a guia Options no caso de não aparecer). Instale-o.
Procurar por Plugin reloader e instalá-lo. Isso permitirá que você recarregue um plugin em vez de ter que fechar e reiniciar QGIS para ter o plugin recarregado.
Em Eclipse, crie um novo projeto. Você pode selecionar*General Project* e vincular suas fontes reais mais tarde, por isso realmente não importa onde você coloca este projeto.
Agora clique com o botão direito seu novo projeto e escolha New ‣ Folder.
Clique [Advanced] e escolha Link to alternate location (Linked Folder). No caso de você já ter fontes que deseja depurar, escolha estes, no caso de você não, crie uma pasta como já foi explicado
Agora, na visão Project Explorer, sua árvore de origem aparece e você pode começar a trabalhar com o código. Você já tem destaque de sintaxe e todas as outras ferramentas IDE disponíveis.
Para obter o depurador trabalhando, alterne para a perspectiva de depuração no Eclipse (Window ‣ Open Perspective ‣ Other ‣ Debug).
Agora inicie o servidor de depuração PyDev selecionando PyDev ‣ Start Debug Server.
Eclipse está agora esperando uma conexão do QGIS ao seu servidor de depuração e quando QGIS se conectar ao servidor de depuração, lhe permitirá controlar os scripts python. Isso é exatamente porque nós instalamos o plugin Remote Debug. Então comece QGIS no caso de você não ter iniciado e clique no símbolo de bug.
Agora você pode definir um ponto de interrupção e, assim que o código atingí-lo, a execução irá parar e você pode inspecionar o estado atual de seu plugin. (O ponto de interrupção é o ponto verde na imagem abaixo, defina um com um duplo clique no espaço em branco à esquerda para a linha que deseja o ponto de interrupção definido)
Uma coisa muito interessante que você pode fazer uso de agora é o console de depuração. Certifique-se de que a execução está parado em um ponto de interrupção, antes de prosseguir.
Abra a visualização da Console (Window ‣ Show view). Ela vai mostrar console Debug Server que não é muito interessante. Mas há um botão [Open Console] que lhe permite mudar para uma console PyDev Debug mais interessante. Clique na seta ao lado do botão [Open Console] e escolha PyDev Debug Console. Uma janela se abre para perguntar-lhe qual console você quer começar. Escolha PyDev Debug Console. No caso de estar acinzentado e dizer-lhe para iniciar o depurador e selecionar o quadro válido, certifique-se de que você tem o depurador remoto ligado e estão atualmente em um ponto de interrupção.
Agora você tem um console interativo que lhe permite testar os comandos de dentro do contexto atual. Você pode manipular as variáveis ou fazer chamadas de API ou o que quer que você queira.
Um pouco chato é que, cada vez que você digitar um comando, o console volta para o Debug Server. Para parar esse comportamento, você pode clicar no botão Pin Console quando estiver na página Debug Server e ele deve se lembrar esta decisão, pelo menos, para a sessão de depuração atual.
Uma característica muito útil é ter Eclipse realmente informado sobre a QGIS API. Isto permite-lhe verificar o seu código de erros de digitação. Mas não é só isso, ele também permite que o Eclipse ajudá-lo com o completamento automático das importações de chamadas da API.
Para fazer isso, Eclipse analisa os arquivos da biblioteca do QGIS e recebe toda a informação lá. A única coisa que você tem a fazer é dizer ao Eclipse onde encontrar as bibliotecas.
Click Window ‣ Preferences ‣ PyDev ‣ Interpreter ‣ Python.
Você vai ver o seu interpretador Python configurado na parte superior da janela (no momento python2.7 para QGIS) e algumas guias na parte inferior. As guias interessantes para nós são Libraries e Forced Builtins
Primeiro, abra a guia Bibliotecas. Adicione uma nova pasta e escolha a pasta python de sua instalação QGIS. Se você não sabe onde está pasta (não é a pasta plugins) abra QGIS, inicie um console python e basta digitar `` qgis`` e pressione Enter. Ela vai mostrar que módulo qgis usa e seu caminho. Tira o final /qgis/__init__.pyc deste caminho e você tem o caminho que está procurando.
Você também deve adicionar sua pasta de plugins aqui (no Linux é o arquivo:~/.qgis/python/plugins).
A seguir pule para a guia Forced Builtins, clique em New... e digite``qgis`. Isso fará com que Eclipse analise QGIS API. Você provavelmente também quer eclipse saiba sobre aPyQt4 API. Por isso, também adicione PyQt4 como construção forçada. Isso deve provavelmente já estar presente em seu guia bibliotecas.
Clique OK e está feito.
Nota: cada vez que a QGIS API muda (por exemplo, se você está compilando QGIS master e o arquivo SIP mudou), você deve voltar a esta página e simplesment clique Apply.. Isso permitirá que o Eclipse analise todas as bibliotecas novamente.
Para outra configuração possível do Eclipse para trabalhar com plugins QGIS Python, verifque este link <http://linfiniti.com/2011/12/remote-debugging-qgis-python-plugins-with-pydev>`_
Se você não usar um IDE como o Eclipse, você pode depurar usando PDB, seguindo estes passos.
Primeiro adicione este código no local onde você gostaria de depurar
# Use pdb for debugging
import pdb
# These lines allow you to set a breakpoint in the app
pyqtRemoveInputHook()
pdb.set_trace()
Em seguida, execute QGIS a partir da linha de comando.
No Linux fazer:
$ ./Qgis
No Mac OS X fazer:
$ /Applications/Qgis.app/Contents/MacOS/Qgis
E quando o aplicativo atingir o seu ponto de interrupção você pode digitar no console!
Adicione informação de testes