Untuk keperluan debugging, saya telah membuat kondisional dengan kode sandi yang memeriksanya bahwa skrip dijalankan sebagai alat yang berdiri sendiri atau sebagai alat ArcGIS. Apakah ada cara untuk mengatasi hal ini saat run time? misalnya beberapa variabel lingkungan, variabel global, dll.
misalnya
dryRun= 1
if dryRun:
par= 'Hello'
else:
par= arcpy.GetParameterAsText(0)
# Do something
sys.executable
akan menjadi sesuatu yang berbeda ketika dijalankan sebagai alat server juga. Tulis skrip pengujian yangarcpy.AddMessage("Executable: " + sys.executable)
akan dikonfirmasi.Jika saya memahami pertanyaan Anda dengan benar, Anda ingin memeriksa untuk melihat apakah Anda menjalankan skrip sebagai alat skrip atau tidak. Jika ini berjalan sebagai alat skrip, Anda ingin mengatur beberapa variabel menggunakan GetParameterAsText, dan jika itu berjalan sebagai mandiri, Anda ingin menggunakan beberapa variabel kode keras, apakah ini benar? Jika demikian, Anda dapat melakukan hal berikut:
Dengan memeriksa panjang sys.argv Anda menentukan berapa banyak parameter yang diteruskan ke skrip. Selalu ada setidaknya satu parameter (lokasi skrip itu sendiri), jadi jika ada lebih dari satu yang dilewati, Anda dapat mengasumsikan bahwa ArcGIS mengirimkannya (kecuali Anda kebetulan melewati argumen dari tempat lain).
sumber
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
Cara sederhana untuk melakukannya adalah seperti ini:
sumber