Używając przybornika Pythona (.pyt) w ArcMap, zwykle podążam za wzorem, w którym sam plik .pyt jest po prostu opakowaniem do zbierania argumentów wejściowych i definiowania samych narzędzi. Kod pomocniczy jest przechowywany w osobnych modułach testowanych przez jednostkę.
Przykład:
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)
Działa to naprawdę dobrze, ale natknąłem się na jedną frustrującą kwestię podczas programowania. Kliknij prawym przyciskiem myszy -> Odśwież .pyt w ArcMap odświeża tylko kod pliku .pyt. Nie odświeża importowanych modułów, więc muszę zamykać i ponownie otwierać ArcMap za każdym razem, gdy coś tam zmieniam. Na szczęście, ponieważ testuję kod niezależnie, nie muszę tego robić toną, ale wciąż jest to poważny problem. Czy jest na to jakiś sposób? Nieco powiązane - czy jest jakiś sposób, aby w pełni odświeżyć konsolę Python (mam niestandardowy pakiet strony, który muszę również zamknąć / ponownie otworzyć ArcMap, aby również pobrać zmiany)?
Używam ArcMap 10.2.1.