Saya telah menulis banyak skrip Python menggunakan ArcPy di ArcGIS 10, dan sejauh ini satu-satunya cara debugging saya dibatasi untuk mencetak pesan ke jendela hasil geoprosesing menggunakan arcpy.AddMessage()
.
Apakah ada opsi lain di luar sana, seperti mengatur break point?
Metode Jason bekerja dengan baik. Jika Anda memiliki bug di kotak alat Anda, seperti validasi, IDE Anda mungkin tidak akan dapat menentukan masalah karena kotak alat dikodekan. Setidaknya WING tidak dapat menentukannya.
arcpy
arcgis-10.0
debugging
Penyamak
sumber
sumber
Jawaban:
Biasanya Python debuggers / IDEs menganggap skrip Python berjalan dalam proses yang sama seperti itu sehingga debugging skrip yang berjalan di ArcMap.exe benar - Anda perlu mendapatkan cukup lingkungan skrip GP yang di-boot dalam skrip Python yang Anda bisa untuk debug dengan.
Metode yang bekerja sangat baik bagi saya selama beberapa tahun terakhir adalah menulis skrip sederhana yang hanya memanggil alat dan menggunakannya sebagai skrip utama saya di Python IDE (Wing atau Pythonwin) dan mengatur breakpoints saya di .py tool .py file juga terbuka di sesi IDE yang sama.
Jadi pada dasarnya saya melakukan ini:
Dan skrip penelepon saya biasanya cukup sederhana:
Saya sudah mencoba winpdb untuk men-debug skrip yang berjalan di ArcMap tetapi saya tidak pernah beruntung. Jika Anda ingin mencobanya dan Anda membuatnya bekerja dengan baik, silakan bagikan temuan Anda.
sumber
Anda dapat mengubahnya dari dialog opsi GP, cukup arahkan ke executable of choice Anda untuk editor / debugger.
sumber
Untuk pengguna 10, jelas rute terbaik untuk pergi adalah dengan posting Jason, yang saya tandai sebagai "jawaban terbaik". Untuk pengguna 9.3, saya bisa mengikuti petunjuk Dukungan KB ESRI yang ditautkan di pos Brad agar berfungsi.
Pada akhirnya kunci untuk mendapatkan pengeditan default skrip python ArcGIS di Pyscripter adalah mengedit sistem "action" untuk "jenis file terdaftar" yang diakhiri dengan file * .py (langkah # 4). Saya membuat tipe tindakan "Edit" baru dan kemudian memasukkan jalur Pyscripter.exe. Setelah saya melakukan ini, tindakan edit default disiapkan untuk meluncurkan Pyscripter, bukan IDLE.
String yang saya gunakan (karena terpotong di kotak dialog yang ditunjukkan di bawah) adalah:
sumber
Saya tidak tahu bagaimana ini akan bekerja dengan arcpy, tetapi Anda dapat mencoba pdb :
sumber
Cara paling lurus ke depan yang saya temukan untuk men-debug kode saya adalah dengan mengkodekan input saya ke jalur file dataset yang sudah ada. Sebagai contoh:
Selain jendela hasil, jendela python menghasilkan pesan kesalahan yang bermanfaat dan / atau memungkinkan Anda untuk menguji potongan kode.
Setiap IDE yang baik memiliki probe debug yang akan memiliki, dalam memori, semua pemrosesan Anda hingga breakpoint saat ini. Dengan itu, Anda dapat melihat apa yang terjadi dengan data. Tetapkan breakpoint di tempat Anda ingin menjeda skrip. Gunakan breakpoint bersyarat jika Anda ingin menghentikan loop pada iterasi tertentu. Juga, ketahui versi Arc Anda dan fungsi apa yang tersedia untuk versi tersebut.
sumber