আরপাই স্ক্রিপ্টগুলি ডিবাগ করছে?


50

আমি আর্কজিআইএস 10 এ আরকিপি ব্যবহার করে বহু পাইথন স্ক্রিপ্ট লিখেছি এবং এখন পর্যন্ত আমার ডিবাগিংয়ের একমাত্র উপায় জিওপ্রসেসিং ফলাফল উইন্ডোতে বার্তা মুদ্রণের মধ্যে সীমাবদ্ধ arcpy.AddMessage()

ব্রেক পয়েন্ট নির্ধারণ করার মতো কোনও বিকল্প আছে কি?

জেসনের পদ্ধতি দুর্দান্ত কাজ করে। যদি আপনার টুলবক্সে বৈধকরণের মতো কোনও বাগ থাকে তবে আপনার আইডিই সম্ভবত সমস্যাটি চিহ্নিত করতে সক্ষম হবে না কারণ সরঞ্জামবক্সগুলি এনকোড করা আছে। কমপক্ষে উইং এটি চিহ্নিত করতে সক্ষম ছিল না।


এখানে একটি বিকল্প হতে পারে? কোড গুগল সিসক্রিপ্টর
ব্র্যাড নেসোম

ArcGIS সাহায্যের কিভাবে PythonWin মধ্যে ডিবাগার ব্যবহার করতে আলোচনা
Regan Sarwas

ওএস ফাইলের বৈশিষ্ট্যগুলিতে আপনি কি পিপিস্প্রিপ্টারে .py ফাইলগুলির জন্য ডিফল্ট প্রোগ্রামটি সেট করার চেষ্টা করেছেন?
কিলোজিও

এটি করার মাধ্যমে, আমি কীভাবে কার্যকরভাবে ওএসকে বলব না যে আমি আমার পাইথন স্ক্রিপ্টটি চালাতে চাই না, বরং এটি কেবল সম্পাদকে খুলতে চাই?
রায়ানডাল্টন

হ্যাঁ সঠিক. দুঃখিত আমি আপনার উদ্দেশ্য ভুল বুঝেছি।
কিলোজিও

উত্তর:


37

সাধারণত পাইথন ডিবাগার / আইডিইরা ধরে নেয় যে পাইথন স্ক্রিপ্টটি একই প্রক্রিয়াতে চলছে ঠিক তেমনই আর্ক্যাম্যাপ.এক্সে চলমান একটি স্ক্রিপ্ট ডিবাগ করা ঠিক আছে - আপনার জিপি স্ক্রিপ্টিং পরিবেশটি পাইথন স্ক্রিপ্টে বুটস্ট্র্যাপ করা উচিত যেমন আপনি করতে পারেন সঙ্গে ডিবাগ।

গত কয়েক বছর ধরে আমার জন্য খুব ভালভাবে কাজ করা একটি পদ্ধতিটি হ'ল একটি সহজ স্ক্রিপ্ট লেখার জন্য যা কেবলমাত্র সরঞ্জামটিকে কল করে এবং সেটিকে পাইথন আইডিই (উইং বা পাইথনউইন) এ আমার প্রধান স্ক্রিপ্ট হিসাবে ব্যবহার করে এবং আমার বিচ্ছেদগুলি সরঞ্জামটির .পি এ সেট করে py ফাইলটি একই আইডিই সেশনেও খোলা থাকে।

সুতরাং মূলত আমি এটি করি:

  1. আমার স্ক্রিপ্ট সরঞ্জামে কাজ করছে না এমন ইনপুটগুলির সেট পান
  2. টুলটি কল করে .tbx হিসাবে একই ফোল্ডারে একটি সাধারণ .py ফাইল খুলুন
  3. আইডিইতে কলার স্ক্রিপ্ট এবং স্ক্রিপ্ট সরঞ্জাম .py ফাইল খুলুন
  4. স্ক্রিপ্ট সরঞ্জাম ফাইলে ব্রেকপয়েন্টগুলি সেট করুন
  5. কলার স্ক্রিপ্টটি চালান

এবং আমার কলার স্ক্রিপ্টটি সাধারণত বেশ সহজ:

import os
import arcpy
arcpy.ImportToolbox(os.path.join(os.path.dirname(__file__), 'my.tbx'))
arcpy.MyToolThatIsFailing_myalias("inputs", "that", "don't" "work")

আমি আর্কেম্যাপে চলমান স্ক্রিপ্টগুলি ডিবাগ করার জন্য winpdb চেষ্টা করেছি তবে আমার কোনও ভাগ্য কখনও হয়নি। আপনি যদি এটি চেষ্টা করে দেখতে চান এবং আপনি এটি ভালভাবে কাজ করতে চান তবে দয়া করে আপনার অনুসন্ধানগুলি ভাগ করুন।


1
চমৎকার সমাধান! আমি এটা চেষ্টা করব.
জর্জ সিলভা

দীর্ঘ-প্রক্রিয়া স্ক্রিপ্টগুলি ডিবাগ করতে আমি অতীতে winpdb সাফল্যের সাথে ব্যবহার করেছি। winpdb, একবার সেট আপ করার ফলে আপনি বর্তমানে চলমান স্ট্যান্ডলোন স্ক্রিপ্টটি বা তাত্ত্বিকভাবে অন্য কোনও প্রক্রিয়া যেমন আর্কম্যাপের মধ্যে একটিতে "লাফিয়ে" পড়ার এবং এটি সাধারণভাবে ডিবাগ করার অনুমতি দেয়। এটি কোনও স্ক্রিপ্টে চেক ইন করার জন্য খুব কার্যকরী ছিল যা সম্পূর্ণ হতে কয়েক সপ্তাহ সময় নেয়। যদিও আমি আর্কজিআইএস অ্যাপ্লিকেশন প্রক্রিয়ার মধ্যে আরকি ডিবাগ করার চেষ্টা করিনি।
blah238

আমি পাইচার্মের প্রস্তাব দিই। এটি
যাদুটির

26

আপনি এটিকে জিপি বিকল্প ডায়ালগ থেকে পরিবর্তন করতে পারবেন, কেবল সম্পাদক / ডিবাগারের জন্য আপনার নির্বাহযোগ্য পছন্দকে নির্দেশ করুন।

জিপি সেটিংস ডায়ালগ


এটি আর্কজিআইএস 10 এর জন্য একটি নতুন বর্ধন বলে মনে হচ্ছে, সঠিক? আমি 9.3 এর জন্য এই সেটিং বিকল্পটি দেখতে পাচ্ছি না।
রায়ানডাল্টন

সঠিক নতুন 10.
জেসন Scheirer

9

10 এর ব্যবহারকারীদের জন্য, স্পষ্টতই সবচেয়ে ভাল যাত্রার পথটি জেসনের পোস্টের সাথে রয়েছে, যা আমি "সেরা উত্তর" হিসাবে চিহ্নিত করেছি। 9.3-র ব্যবহারকারীদের জন্য, আমি ব্র্যাডের পোস্টে লিঙ্কিত ESRI KB সমর্থন নির্দেশাবলী এটি কার্যকর করতে অনুসরণ করতে সক্ষম হয়েছি ।

চূড়ান্তভাবে পাইস্ক্রিপ্টারে আর্কজিআইএস পাইথন স্ক্রিপ্টগুলির ডিফল্ট সম্পাদনা পাওয়ার মূল কীটি ছিল * .py ফাইলগুলিতে শেষ হওয়া "নিবন্ধিত ফাইল ধরণের" সিস্টেম "অ্যাকশন" সম্পাদনা করা (পদক্ষেপ # 4)। আমি একটি নতুন "সম্পাদনা" অ্যাকশন টাইপ তৈরি করেছি এবং তারপরে পাইস্ক্রিপ্টার.এক্সে পথটি অন্তর্ভুক্ত করেছি। একবার এটি করার পরে, ডিফল্ট সম্পাদনা ক্রিয়াকলাপটি আইডলির পরিবর্তে পাইস্ক্রিপ্টার চালু করার জন্য সেটআপ করা হয়েছিল।

আমি যে স্ট্রিংটি ব্যবহার করেছি (কারণ এটি নীচে প্রদর্শিত ডায়ালগ বাক্সে কাটা হয়েছিল) তা হ'ল:

"C:\Program Files\PyScripter\PyScripter.exe" "%1"

এখানে চিত্র বর্ণনা লিখুন


1
উত্তরের জন্য +1, এবং আবারও যদি আমি পারতাম, কেবল স্ট্রিংটি অন্তর্ভুক্ত করার জন্য এবং কেবল একটি চিত্র নয় (পাঠ্যটি অনুলিপি করা এবং আটকানো এত সহজ!)।
ম্যাট উইলকি

7

আমি কিভাবে এই arcpy সঙ্গে কাজ করবে জানি না, কিন্তু আপনি চেষ্টা করে দেখতে পারেন পিডিবি :

import pdb; pdb.set_trace()

গ্রহনের সাথে পাইদেবের জন্য একই রকম কার্যকারিতা রয়েছে যা এখানে বর্ণিত। আপনি একটি সিগন্যাল শোনার জন্য গ্রহনটি সেট করেছেন এবং আপনি একটি পিডাইভড.সেটট্রেস () ফাংশন কল দ্বারা গ্রহটির বাইরে পুরোপুরি চলমান কোডে ট্রিগার করতে পারেন। urbansim.org/Documentation/DebuggingWithEclipse
Ako

0

আমার কোডটি ডিবাগ করার জন্য আমি সবচেয়ে সোজা এগিয়ে যাওয়ার উপায় হ'ল আমার ইনপুটগুলিকে একটি বিদ্যমান ডেটাসেটের ফাইলের পথে হার্ড কোড করা। উদাহরণ স্বরূপ:

import arcpy

# parameters for script
#input1 = arcpy.GetParameterAsText(0) # layer
#input2 = arcpy.GetParameterAsText(1) # folder

# debugging parameters
input1 = r"path/to/your/data.shp"
input2 = r"path/to/your/folder"

ফলাফল উইন্ডো ছাড়াও, পাইথন উইন্ডোটি সাহায্যকারী ত্রুটি বার্তা দেয় এবং / অথবা আপনাকে কোড স্নিপেটগুলি পরীক্ষা করতে দেয়।

যে কোনও ভাল আইডিইয়ের একটি ডিবাগ প্রোব রয়েছে যা মেমোরিতে আপনার সমস্ত প্রসেসিং বর্তমান ব্রেকপয়েন্ট পর্যন্ত থাকবে। এটির সাহায্যে আপনি দেখতে পাচ্ছেন যে ডেটা দিয়ে কী চলছে। ব্রেকপয়েন্টগুলি সেট করুন যেখানে আপনি স্ক্রিপ্টটি বিরতি দিতে চান। আপনি যদি কোনও নির্দিষ্ট পুনরাবৃত্তিতে লুপ থামাতে চান তবে শর্তযুক্ত ব্রেকপয়েন্টগুলি ব্যবহার করুন। এছাড়াও, আপনার আর্ক সংস্করণগুলি এবং সেই সংস্করণগুলিতে কী কী কার্যাদি উপলব্ধ তা জেনে নিন know

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.