Saat menggunakan kotak alat python (.pyt) di ArcMap, saya biasanya akan mengikuti pola di mana file .pyt itu sendiri hanyalah pembungkus untuk mengumpulkan argumen input dan mendefinisikan alat itu sendiri. Kode pendukung disimpan dalam modul unit-testable yang terpisah.
Contoh:
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)
Ini bekerja dengan sangat baik tetapi saya telah mengalami satu masalah yang membuat frustrasi selama pengembangan. Klik kanan -> Refresh pada .pyt di ArcMap hanya menyegarkan kode file .pyt. Itu tidak menyegarkan modul yang diimpor, jadi saya harus menutup dan membuka kembali ArcMap setiap kali saya mengubah sesuatu di sana. Untungnya, karena saya sedang menguji kodenya secara independen, saya tidak perlu melakukan ini banyak, tetapi masih merupakan masalah besar. Apakah ada cara untuk mengatasi ini? Agak terkait - apakah ada cara untuk me-refresh sepenuhnya konsol Python (saya punya paket-situs kustom yang saya juga harus menutup / membuka kembali ArcMap untuk menarik perubahan juga)?
Saya menggunakan ArcMap 10.2.1.
sumber
reload()
langsung setelah mengimpor modul pendukung, di bagian atas file PYT toolbox. Jadi, jika kotak alat berisi beberapa alat, saya tidak harus menduplikasi ulang diexecute()
fungsi masing-masing alat .from pyfile import Tool
, menambahkanreload(tool)
kembalitypeError: reload() argument must be module
. Ada ide?Inilah cara yang berbeda dan lebih kuat dari yang saya sarankan sebelumnya.
Saya belum pernah menggunakan modul ini, tapi saya pikir itu akan menyelesaikan masalah Anda:
Modul Reloader Python
Dengan contoh sebelumnya, ini akan memuat semua ketergantungan dengan satu panggilan:
Ini adalah pertama kalinya saya memperhatikan modul ini, jadi jika Anda mengimplementasikannya di alat Anda, komentar kembali pada seberapa baik kerjanya untuk Anda.
sumber