Cuando use una caja de herramientas de Python (.pyt) en ArcMap, normalmente seguiré un patrón en el que el archivo .pyt en sí mismo es simplemente un contenedor para recopilar argumentos de entrada y definir las propias herramientas. El código de soporte se mantiene en módulos separados que pueden probarse en unidades.
Ejemplo:
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)
Esto funciona muy bien, pero me he encontrado con un problema frustrante durante el desarrollo. Haga clic derecho -> Actualizar en .pyt en ArcMap solo actualiza el código del archivo .pyt. No actualiza los módulos importados, por lo que tengo que cerrar y volver a abrir ArcMap cada vez que cambie algo allí. Afortunadamente, como estoy probando el código de forma independiente, no tengo que hacer esto una tonelada, pero sigue siendo una molestia importante. ¿Hay alguna forma de evitar esto? Algo relacionado: ¿hay alguna forma de actualizar completamente la consola de Python (tengo un paquete de sitio personalizado que también debo cerrar / volver a abrir ArcMap para extraer los cambios también)?
Estoy usando ArcMap 10.2.1.