Lorsque j'utilise une boîte à outils python (.pyt) dans ArcMap, je suivrai généralement un modèle où le fichier .pyt lui-même est simplement un wrapper pour collecter les arguments d'entrée et définir les outils eux-mêmes. Le code pris en charge est conservé dans des modules testables unitairement séparés.
Exemple:
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)
Cela fonctionne très bien mais j'ai rencontré un problème frustrant pendant le développement. Cliquez avec le bouton droit -> Actualiser sur le .pyt dans ArcMap actualise uniquement le code du fichier .pyt. Il ne rafraîchit pas les modules importés, je dois donc fermer et rouvrir ArcMap chaque fois que je change quelque chose. Heureusement, puisque je teste le code indépendamment, je n'ai pas à le faire une tonne, mais c'est toujours un problème majeur. Y a-t-il un moyen de contourner cela? Assez lié - existe-t-il un moyen d'actualiser complètement la console Python (j'ai un package de site personnalisé dont je dois également fermer / rouvrir ArcMap pour y apporter également des modifications)?
J'utilise ArcMap 10.2.1.