Quando utilizzo una toolbox python (.pyt) in ArcMap, seguirò generalmente un modello in cui il file .pyt stesso è semplicemente un wrapper per raccogliere argomenti di input e definire gli strumenti stessi. Il codice di supporto viene conservato in moduli separati testabili dall'unità.
Esempio:
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)
Questo funziona davvero bene, ma ho riscontrato un problema frustrante durante lo sviluppo. Fare clic con il tasto destro del mouse -> Aggiorna su .pyt in ArcMap aggiorna solo il codice del file .pyt. Non aggiorna i moduli importati, quindi devo chiudere e riaprire ArcMap ogni volta che cambio qualcosa lì. Fortunatamente, dal momento che sto testando il codice in modo indipendente, non devo farlo un sacco, ma è ancora una seccatura maggiore. C'è un modo per aggirare questo? In qualche modo correlato - c'è un modo per aggiornare completamente la console Python (ho un pacchetto del sito personalizzato che devo anche chiudere / riaprire ArcMap per estrarre anche le modifiche)?
Sto usando ArcMap 10.2.1.