Ao usar uma caixa de ferramentas python (.pyt) no ArcMap, normalmente seguirei um padrão em que o próprio arquivo .pyt é simplesmente um invólucro para coletar argumentos de entrada e definir as próprias ferramentas. O código de suporte é mantido em módulos testáveis por unidade separados.
Exemplo:
import supporting_module
class MyTool(object):
...
def execute(self, parameters, messages):
"""The source code of the tool."""
some_input = parameters[0].valueAsText
some_output = parameters[1].valueAsText
supporting_module.do_something(some_input, some_output)
arcpy.SetParameter(2, some_output)
Isso funciona muito bem, mas encontrei um problema frustrante durante o desenvolvimento. Clique com o botão direito do mouse -> Atualizar no .pyt no ArcMap apenas atualiza o código do arquivo .pyt. Ele não atualiza os módulos importados, por isso tenho que fechar e reabrir o ArcMap sempre que alterar alguma coisa lá. Felizmente, como estou testando o código de forma independente, não preciso fazer isso muito, mas ainda é um grande aborrecimento. Existe alguma maneira de contornar isso? Um pouco relacionado - existe alguma maneira de atualizar completamente o console do Python (eu tenho um pacote de sites personalizado que também devo fechar / reabrir o ArcMap para obter alterações também)?
Estou usando o ArcMap 10.2.1.