โดยทั่วไปแล้ว Python debuggers / IDE จะสมมติว่าสคริปต์ Python กำลังทำงานในกระบวนการเดียวกับตัวเองดังนั้นการดีบักสคริปต์ที่ทำงานใน ArcMap.exe นั้นถูกต้อง - คุณต้องทำให้ GP ของสภาพแวดล้อมการเขียนสคริปต์เพียงพอในสคริปต์ Python ในขณะที่คุณสามารถ แก้ไขข้อบกพร่องด้วย
วิธีการที่ใช้งานได้ดีสำหรับฉันในช่วงไม่กี่ปีที่ผ่านมาคือการเขียนสคริปต์ง่าย ๆ ที่เพิ่งเรียกเครื่องมือและใช้เป็นสคริปต์หลักของฉันใน Python IDE (Wing หรือ Pythonwin) และตั้งจุดพักของฉันไว้ใน. py ของเครื่องมือ ไฟล์ยังเปิดในเซสชัน IDE เดียวกัน
ดังนั้นโดยทั่วไปฉันทำสิ่งนี้:
- รับชุดอินพุตที่ไม่ทำงานในเครื่องมือสคริปต์ของฉัน
- เปิดไฟล์. py อย่างง่ายในโฟลเดอร์เดียวกับ. tbx ที่เรียกใช้เครื่องมือ
- เปิดสคริปต์ผู้โทรและไฟล์สคริปต์. py ใน IDE
- ตั้งจุดพักในไฟล์เครื่องมือสคริปต์
- รันสคริปต์ผู้โทร
และสคริปต์ผู้โทรของฉันก็ค่อนข้างง่าย:
import os
import arcpy
arcpy.ImportToolbox(os.path.join(os.path.dirname(__file__), 'my.tbx'))
arcpy.MyToolThatIsFailing_myalias("inputs", "that", "don't" "work")
ฉันลองwinpdbเพื่อดีบักสคริปต์ที่ทำงานใน ArcMap แต่ฉันไม่เคยโชคดี หากคุณต้องการที่จะลองและทำให้มันใช้งานได้ดีโปรดแบ่งปันสิ่งที่คุณพบ