Wenn Sie in ArcMap eine Python-Toolbox (.pyt) verwenden, folgen Sie in der Regel einem Muster, bei dem die .pyt-Datei selbst nur ein Wrapper ist, um Eingabeargumente zu sammeln und die Tools selbst zu definieren. Der unterstützende Code wird in separaten, für Einheiten testbaren Modulen aufbewahrt.
Beispiel:
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)
Das funktioniert sehr gut, aber ich bin während der Entwicklung auf ein frustrierendes Problem gestoßen. Klicken Sie mit der rechten Maustaste auf "-> Aktualisieren" auf ".pyt" in ArcMap aktualisiert nur den Code der .pyt-Datei. Die importierten Module werden nicht aktualisiert, sodass ich ArcMap schließen und erneut öffnen muss, wenn ich dort etwas ändere. Da ich den Code unabhängig teste, muss ich das zum Glück nicht viel tun, aber es ist immer noch ein großer Aufwand. Gibt es einen Weg, dies zu umgehen? Etwas verwandt - gibt es eine Möglichkeit, die Python-Konsole vollständig zu aktualisieren (ich habe ein benutzerdefiniertes Site-Paket, das ich auch schließen / erneut öffnen muss, um Änderungen zu übernehmen)?
Ich verwende ArcMap 10.2.1.