স্ক্রিপ্ট সম্পাদনার পরে পাইথন অ্যাডিন পুনরায় সংকলন করছেন?


15

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

বর্তমানে, আমি যদি স্ক্রিপ্টে একটি সম্পাদনা করি তবে মনে হয় আমার এটি করা উচিত

  1. বন্ধ
  2. আমার অ্যাডিন ফোল্ডারে যান এবং 'মেকাডডিন' পাইথন ফাইলটিতে ডাবল ক্লিক করুন
  3. 'পাইথন অ্যাডিন ফাইল' তে দুবার ক্লিক করুন
  4. পরিবর্তনগুলি কার্যকর হওয়ার জন্য আর্কম্যাপ পুনরায় চালু করুন

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

এটি করার আরও ভাল উপায় আছে?

উত্তর:


11

আপনি reloadনিজের মডিউলটি স্বয়ংক্রিয়ভাবে পুনরায় লোড করতে পাইথনে বিল্টিন ফাংশনটি ব্যবহার করতে পারেন । আপনি যা কিছু করতে পারেন তা হ'ল:

import mymodule

def hook():
    reload(mymodule)
    mymodule.myfunction()

যেখানে hook()কি ArcMap ডাকা এবং আসুন হয় mymoduleমডিউল আপনাকে আমন্ত্রণ মধ্যে সম্পাদনা করছেন হয়। আপনি sys.pathযে মডিউলটি সম্পাদনা করছেন তার পথ অন্তর্ভুক্ত করতে আপনাকে সম্পাদনা করতে হতে পারে যাতে import mymoduleব্যর্থ হয় না। অথবা ডিরেক্টরিটি অন্তর্ভুক্ত করুন site-packages(সম্ভবত ব্যবহার করছেন python setup.py develop)।


1
অবশ্যই এটি কেবল উন্নয়নের সময় সহায়ক হবে; আমি বিশ্বাস করি ArcGIS ডিজাইনার মনস্থ করা আপনি addin (জড়ানোর আগে আপনার স্ক্রিপ্ট পরীক্ষা করার জন্য resources.arcgis.com/en/help/main/10.1/index.html#/... )
CWA

এটি আমি পাশাপাশি করি। আমি এম্বেডড ডিবাগিংয়ের জন্য উইনপিডিবিও ব্যবহার করি ।
blah238

পরামর্শের জন্য ধন্যবাদ. এটি আমার দক্ষতার সেট থেকে কিছুটা দূরে। এটি কার্যকর করা কি কঠিন? আমি শিখতে ব্যবহার করতে পারি এই সম্পর্কে আরও কিছু তথ্য আছে?
মাইক 16

1
আমি আর্কজিআইএস-এর সীমিত অভিজ্ঞতার সাথে পাইথন বিকাশকারী, তবে আমি এটি শিখছি। আমি এগুলি সনাক্ত করার পরে আরও বিশদ সহ আপডেট করব।
cwa

@ blah238 আপনি এমবেডড ডিবাগিংটি কীভাবে কনফিগার করেছেন? আমার অ্যাডিন সংযুক্ত হবে তবে সংযোগটি লোড হওয়ার পরে ড্রপ করবে।
শনল্যাংলে

8

@ ব্লাহ 238 এর পরামর্শ অনুসারে, নিম্নলিখিত স্ক্রিপ্ট

  1. আর্কম্যাপ বন্ধ করে (যদি খোলা থাকে)
  2. অ্যাড-ইন তৈরি করে
  3. নিঃশব্দে অ্যাড-ইন ইনস্টল করে
  4. আর্কম্যাপ ডকুমেন্টটি পুনরায় খোলে

Makeaddin.py ধারণকারী ডিরেক্টরিতে সংরক্ষণ করুন:

import os

#Location of ESRIRegAddIn.exe
esri = "C:/Program Files (x86)/Common Files/ArcGIS/bin/ESRIRegAddIn.exe"
cwd = os.getcwd()
mapdoc = <path to mxd>

#Close ArcMap if it is open
try:    os.system("TASKKILL /F /IM ArcMap.exe")
except:    pass

#Create ESRI Add-in file
os.system(os.path.join(cwd, "makeaddin.py"))

#Silently install Add-in file. The name of the file is based on folder it's located in.
os.system('"{0}" {1} /s'.format(esri, os.path.split(cwd)[-1] + ".esriaddin"))

#Open test map document.
os.system(mapdoc)

এটি কি আপনার পাইথনটুল_অাদিন.পি ফাইলের অন্তর্ভুক্ত?
শনল্যাংলে

@ শনল্যাংলে, এটি কোনও মেকাডডিন.পি-র ডিরেক্টরিতে থাকা পৃথক .py ফাইল নয়
পল

দুর্দান্ত স্ক্রিপ্ট। তবে, যেমনটি প্রত্যাশা করা হয়েছিল, স্ক্রিপ্টটি আর্কেম্যাপের বাইরে .mxd ফাইলটি খোলার চেষ্টা করলে আর্কম্যাপ নেমে আসে। এটির কি জানা যায়?
TheLastGIS

1
@ দ্য লাস্টজিআইএস হ্যাঁ ভেরিয়েবলগুলি arcmap = "C:/Program Files (x86)/ArcGIS/Desktop10.3/bin/ArcMap.exe"এবং Map = '"{0}" {1} /s'.format(arcmap, mapdoc)উপরের অংশে যুক্ত করুন। তাহলে os.system(Map)সফল হবে যেখানে os.system(mapdoc)না।
বর্ণমালা

2

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

আরকজিআইএস আলোচনা ফোরামের থ্রেডটি এখানে অবস্থিত ।


1
আপনি কি আপনার উত্তরের সাথে সম্পর্কিত লিঙ্কগুলি যুক্ত করতে পারেন?
blah238

আমি ভোট দিতে চেয়েছিলাম কিন্তু @ মাইকের উল্লেখ করা আর্কজিআইএস আইডিয়াটি খুঁজে পেলাম না।
পলিজিও

দুঃখিত, আমি এই উত্তরটি এখন পর্যন্ত দেখিনি। আরকিজিআইএস ওয়েবসাইটে লিঙ্কটি আপডেট করার জন্য @ পলিজিওকে ধন্যবাদ।
মাইক 16

1

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

জিইউআইতে ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন এমন কোডের জন্য, আমি প্রক্রিয়াটি দ্রুত করতে নিম্নলিখিত ব্যাচ স্ক্রিপ্টটি ব্যবহার করি:

@echo off
echo building...
python makeaddin.py
echo installing...
start myaddin.esriaddin
echo load ArcMap...
start %HOMEDRIVE%%HOMEPATH%\Documents\ArcGIS\myaddin.mxd

যেখানে myaddin.mxd এর ডেটা স্তর এবং প্রসঙ্গ রয়েছে যা আমি নির্দিষ্ট প্রকল্পের জন্য ব্যবহার করি। এটি একসাথে অ্যাডিন ইনস্টল এবং আরক্যাম্যাপে আগুন জ্বালিয়ে দেবে, তবে আমি সাধারণত আরজিজিআইএস শুরু হওয়ার চেয়ে দ্রুত 'ইনস্টল অ্যাড-ইন' বোতামে ক্লিক করতে পারি। বিকল্পভাবে, আপনি pauseআরকজিআইএস শুরু করার আগে ইনপুটটির জন্য অপেক্ষা করতে শেষ কমান্ডের আগে যোগ করতে পারেন ।


1
আপনি ব্যবহার করতে পারে ESRIRegAddIn.exeসঙ্গে /sচুপটি মধ্যে অ্যাড-ইনস্টল করার জন্য সুইচ। আমার মেশিনে ESRIRegAddIn যাওয়ার পথটি C:\Program Files (x86)\Common Files\ArcGIS\bin
blah238
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.