أكثر

يتم تشغيل البرنامج النصي في نافذة ArcMap Python ولكن ليس في PythonWin أو IDLE المستقل؟

يتم تشغيل البرنامج النصي في نافذة ArcMap Python ولكن ليس في PythonWin أو IDLE المستقل؟


أحاول أتمتة بعض المعالجات الجغرافية الأساسية لخدمة خرائط الويب. أنا أستخدم ArcGIS 10.1 for Desktop.

تم إنشاء هذا الرمز في ModelBuilder وتم تصديره إلى Python.

يعمل هذا بشكل مثالي في ArcGIS for Desktop.

ومع ذلك ، تقوم بإرجاع الخطأ 000732 لكل من مجموعة البيانات "Service_Group" وورقة Excel التي سيتم ضمها عند تشغيل خارج Arc.

لقد غيرت #Local Variables إلى مسار UNC بدون حظ.

import arcpy mxd = arcpy.mapping.MapDocument (r "X:  Mikes_Workspaces  Outage  Outage.mxd") df = arcpy.mapping.ListDataFrames (mxd، "Layers") [0] # وسيطات البرنامج النصي OutCurrent = arcpy.GetParameterAsText ( 0) إذا كان OutCurrent == '#' أو لا OutCurrent: OutCurrent = "X:  Geodatabases  WebData  Water_Service.gdb  OutCurrent" # توفير قيمة افتراضية إذا لم يتم تحديد # متغيرات محلية: Service_Group = "Service_Group" Update_ = "S:  Pump and Canal Patrol  Water On  4-7-15  Outage_Board.xls  Update $" Group_Out = "Service_Group" # العملية: إضافة انضم إلى arcpy.AddJoin_management (Service_Group، "Group_" ، Update_، "Group_Out"، "KEEP_COMMON") # العملية: ميزات النسخ arcpy.CopyFeatures_management (Group_Out، OutCurrent، ""، "0"، "0"، "0") # العملية: Symbology arcpy.ApplySymbologyFromLayer_management ("OutCurrent" ، "X:  Mikes_Workspaces  Online Shapefiles  Outage_today.lyr") # العملية: إزالة Join arcpy.RemoveJoin_management (Service_Group، "")

هذا هو الخطأ المتلقى:

Traceback (آخر مكالمة أخيرة): ملف "C:  Python27  ArcGISx6410.1  Lib  site -pack  Pythonwin  pywin  framework  scriptutils.py" ، السطر 326 ، في RunScript exec codeObject في __main __.__ict__ File "E :  GIS  Mikes_Workspaces  Automation  OutageUpdate.py "، السطر 15 ، في  arcpy.AddJoin_management (Service_Group، "Group_"، Update_، "Group_Out"، "KEEP_COMMON") ملف "C:  Program Files  ArcGIS  Server  arcpy  arcpy  management.py" ، السطر 5325 ، في AddJoin رفع e ExecuteError: فشل في التنفيذ. المعلمات غير صالحة. خطأ 000732: اسم الطبقة أو طريقة عرض الجدول: مجموعة البيانات Service_Group غير موجودة أو غير مدعومة. خطأ 000732: الانضمام إلى الجدول: Dataset S:  Pump and Canal Patrol  Water On  4-7-15  Outage_Board.xls  Update $ غير موجود موجود أو غير مدعوم فشل تنفيذ (AddJoin).

بالإضافة إلى النصيحة المقدمة كتعليقات من قبل الآخرين ، سألاحظ أيضًا أنك ستواجه خطأ عندما يصل النص البرمجي إلى:

arcpy.ApplySymbologyFromLayer_management ("OutCurrent"، "X:  Mikes_Workspaces  Online Shapefiles  Outage_today.lyr")

تحتاج إلى تقديم اسم المسار كإحدى الطرق الثلاث التالية:

  • r "X: Mikes_Workspaces ملفات الأشكال على الإنترنت Outage_today.lyr"
  • "X: Mikes_Workspaces ملفات الأشكال على الإنترنت Outage_today.lyr"
  • "X: / Mikes_Workspaces / ملفات الأشكال على الإنترنت / Outage_today.lyr"

الطريقة التي تحصل عليها ستعطيك خطأ.


لقد واجهت هذه المشكلة أيضًا ، وكان حدسي على هذا النحو:

  1. يحدث ذلك فقط على الأجهزة التي تحتوي على إصدار 32 بت (لـ ArcGIS Desktop) و 64 بت (for ArcGIS Server) من Python عليها ، و
  2. أي شيء له علاقة باستخدام ملف Excel يعمل فقط مع الإصدار 32 بت من python

تستخدم نوافذ التعليمات البرمجية التفاعلية ArcMap و ArcCatalog إصدارات 32 بت من Python ، لذلك يعمل البرنامج النصي. يشير مسار نظام Python إلى الإصدار 64 بت ، لذلك عندما أقوم بتشغيله من PyScripter أو IDLE أو ملف دفعي مجدول ، فإنه يفشل. الحل الخاص بي: اعتقدت أنني سأضطر إلى استخدام شيء مثل هذا: https://stackoverflow.com/questions/11170827/how-tell-python-script-to-use-particular-version حيث قمت بتغيير متغيرات البيئة مؤقتًا (من 64- إلى 32-bit python) قبل تشغيل البرنامج النصي الخاص بي ، ثم أعيده بعد ذلك (من 32 إلى 64 بت). لكن في النهاية ، كان علي فقط تحديد ملف python.exe الذي سأستخدمه لتشغيل python. لذلك في سطر الأوامر (أو في ملف دفعي) أضع شيئًا كالتالي:

C: /Python27/ArcGIS10.2/python E: /scripts/my_python_script.py

ويعمل بالنسبة لي.


يكتب المبرمجون عمومًا نصوصًا برمجية مستقلة عن البيئات الحية. ثم يقومون بحفظه بامتداد ".py" ، مما يشير إلى نظام التشغيل والمبرمج أن الملف هو في الواقع برنامج Python. بعد استدعاء المترجم ، يقوم بقراءة الملف وتفسيره. تختلف طريقة تشغيل نصوص Python على أنظمة Windows عن أنظمة التشغيل المستندة إلى Unix. سنوضح لك الفرق وكيفية تشغيل برنامج نصي بلغة Python على أنظمة Windows و Unix.

قم بتشغيل برنامج Python النصي تحت Windows باستخدام موجه الأوامر

يجب على مستخدمي Windows تمرير مسار البرنامج كوسيطة لمترجم Python. مثل ما يلي:

لاحظ أنه يجب عليك استخدام المسار الكامل لمترجم بايثون. إذا كنت تريد ببساطة كتابة python.exe C: Users Username Desktop my_python_script.py ، يجب عليك إضافة python.exe إلى متغير PATH البيئي الخاص بك. للقيام بذلك ، تحقق من إضافة Python إلى مقالة بيئة PATH ..

نافذة على python.exe مقابل pythonw.exe

لاحظ أن Windows يأتي مع ملفي Python التنفيذيين - python.exe و pythonw.exe. إذا كنت تريد نافذة منبثقة عند تشغيل البرنامج النصي ، فاستخدم python.exe ولكن إذا كنت لا تريد أي نافذة منبثقة ، فاستخدم pythonw.exe. يتم استخدام pythonw.exe عادةً لبرامج واجهة المستخدم الرسومية ، حيث تريد فقط عرض برنامجك ، وليس الجهاز.


نافذة بايثون

أسهل مكان لبدء تعلم خرائط arcpy هو نافذة Python. تعد نافذة Python جزءًا من إطار عمل ArcMap وتوفر الإكمال التلقائي بحيث يمكنك بسهولة قراءة الأسماء وترتيب معلمات الوظيفة. توضح لك الخطوات أدناه كيفية إعداد نافذة Python للحصول على تجربة مستخدم نهائية مرضية وأيضًا لمطابقة لقطات الشاشة في هذا المستند.

  1. افتح مستند خريطة جديد فارغ في ArcMap.
  2. انقر فوق المعالجة الجغرافية & gt Python.

إذا كانت هذه هي المرة الأولى التي تفتح فيها نافذة Python ، فستظهر على أنها تطفو فوق التطبيق. تتمثل الخطوات التالية في تثبيت نافذة Python وتعديل موضع المساعدة.


نموذج التعليمات البرمجية

مثال CalibrateRoutes (Python Window)

يوضح البرنامج النصي Python Window التالي كيفية استخدام وظيفة CalibrateRoutes في الوضع الفوري.

CalibrateRoutes مثال رقم 2 (نص برمجي Python مستقل)

يوضح البرنامج النصي Python التالي كيفية استخدام وظيفة CalibrateRoutes مع بيانات قاعدة البيانات الجغرافية للملف في نص برمجي Python مستقل.

CalibrateRoutes مثال رقم 3 (نص برمجي بايثون مستقل)

يوضح نص Python النصي التالي كيفية استخدام وظيفة CalibrateRoutes مع بيانات قاعدة البيانات الجغرافية الشخصية في نص برمجي Python مستقل.

CalibrateRoutes مثال رقم 4 (نص بايثون مستقل)

يوضح نص Python النصي التالي كيفية استخدام وظيفة CalibrateRoutes مع بيانات SDE في نص برمجي Python مستقل.


بالنسبة للنصوص الخاصة بي ، أفضل استخدام sh للأسباب التالية:

  • هو موحد
  • إنه أبسط وأسهل بكثير للتعلم
  • إنه محمول عبر أنظمة POSIX - حتى إذا لم يكن لديهم bash ، فيجب أن يكون لديهم sh

هناك مزايا لاستخدام bash أيضًا. تجعل ميزاته البرمجة أكثر ملاءمة وتشابهًا للبرمجة في لغات البرمجة الحديثة الأخرى. وتشمل هذه أشياء مثل المصفوفات والمتغيرات المحلية المحددة النطاق. لغة sh Plain هي لغة برمجة بسيطة للغاية.


2 إجابات 2

اكتشف ما إذا تم تصغير جميع النوافذ

تشير الإجابة الحالية إلى الأدوات الصحيحة ، ولكن بها بعض المشكلات ، ولن تعمل كما هي.

في حالة & quotstandalone & quot (ليس من حلقة موجودة) ، تحتاج إلى إضافة (انظر أدناه) *:

is_minimzed () هي طريقة ولن تعمل بدون ()

الجواب غير قابل للاستخدام في موقف آخر غير OP

النص العام لمعرفة ما إذا تم تصغير جميع النوافذ سيكون عندئذٍ:

المخاطر المشتركة

في حين أن واجهة برمجة التطبيقات التي يوفرها libwnck يجب أن تكون في الغالب مباشرة بشكل عام ، غالبًا ما يصطدم مستخدمو المكتبة ببعض المزالق. الجلب الصريح للمعلومات عند إنشائه ، لن يقوم كائن WnckScreen بجلب المعلومات من خادم X. إذا تم الاستعلام فورًا بعد إنشائه (عبر wnck_screen_get_windows () أو wnck_screen_get_workspaces () ، على سبيل المثال) ، سيبدو كائن WnckScreen وكأنه لا توجد مساحات عمل ولا نوافذ على الشاشة. يتم جلب هذه المعلومات في حلقة الحدث الرئيسية مع مصدر خامل ، لتجنب عملية متزامنة باهظة الثمن عند بدء التشغيل. إذا لم يتم استخدام حلقة حدث رئيسي ، أو إذا كانت المعلومات مطلوبة في أقرب وقت ممكن بعد إنشاء الكائن ، فيمكن استخدام wnck_screen_force_update () لجلب المعلومات بشكل صريح.


ما هو Python IDE الذي تفضله لكتابة البرامج النصية باستخدام Arcpy؟

لقد استخدمت Pythonwin دائمًا ولكني أرغب في التفرع ، ولا أعرف حتى من أين أبدأ. & # x27m ليس خبيرًا بأي حال من الأحوال ، لكنني أعتمد على Python قليلاً. أي توجيه سيكون مقدرا.

يبدو أنني & # x27m سأجربها!

متفق! PyCharm رائع. لقد حصلت بطريقة ما على ترخيص مجاني للإصدار الاحترافي لمدة عام. ربما بسبب عنوان .edu.

& # x27ve لم أستخدمه أبدًا. لماذا هو رائع جدا؟ FTR أستخدم نصًا رائعًا

إصدار المجتمع PyCharm

ربما تستخدم المفكرة ، أميريتي؟

لقد أعطيته حقًا فرصة ولكني لم أستطع الحصول على تعليق منه. أعتقد أنني & # x27m فقط غير صبور للغاية و PyCharm تقدم هذا المردود الجميل عاجلاً.

لقد استخدمت Spyder لفترة جيدة قبل التبديل إلى PyCharm. Pycharm لديها الكثير من الأجراس والصفارات. أحب بشكل خاص أن أكون قادرًا على تنظيم Virtualenvs والحزم لكل مشروع Python ، والتكامل مع التحكم في الإصدار أمر جيد أيضًا.

إذا كنت لا & # x27t أرغب في إلقاء حوض المطبخ بالكامل في مشكلة ، أو كنت بحاجة فقط إلى برنامج نصي سريع لمرة واحدة لمهمة واحدة ، فإنني & # x27ll أيضًا استخدم Sublime Text.

أنا أحب النص الرائع لجافا سكريبت ، HTML ، كل شيء تقريبًا. لم أحاول ذلك مع Arcpy & # x27t. سمعت أنه يجب عليك القيام ببعض الأعمال مسبقًا حتى تعمل ، لذا لم أجربها. هل هذا صحيح؟

تحرير: استيراد Arcpy بشكل أساسي. كيف جعلته يحدث ؟؟

لقد بدأت للتو في استخدام PyScripter الذي أحبه تمامًا ولكني مهتم حقًا برؤية إجابات أخرى.

أنا أحب Pyscripter ، على الرغم من الاعتراف بأن & # x27s يرجع جزئيًا إلى كونه ما تعلمته.

معار. ما زلت أفضل PyCharm ، لكني & # x27ve استخدمت Atom في العديد من المشاريع وهي قابلة للاستخدام تمامًا.

أنا أستخدم Visual Studio. يعجبني ذلك لأنني أقوم أيضًا بتطوير C # باستخدام ArcObjects لذا من الجيد العمل في بيئة واحدة لكليهما.

أستخدم Arcpy مع IDLE الذي أكرهه. أستخدم Spyder لكل شيء آخر ، مثل حيوانات الباندا ، والإحصائيات ، والنماذج ، والنص ، نظرًا لأنه يأتي مع تثبيت Anaconda وهو يذكرني بـ Rstudio.

تحرير: لدي نسخة 64 بت من أناكوندا مثبتة. من خلال ما قمت بالبحث عنه ، فإنه لا يعمل بشكل جيد مع Arcpy ولدي وظيفتي شخص واحد لتكنولوجيا المعلومات لتثبيت برنامج مثل 300 شخص في قسمي (قسم الطوارئ في كلية الطب) لذلك لا يستحق عناء تثبيت إصدار 32 بت للاستخدام أركبي.


os.system ("sudo python scale1.py")

ستحتاج أولاً إلى استيراد وحدة نظام التشغيل

ليس لدي جهاز صراف آلي معي للاختبار ، ولكن هذا يأتي من الإجابة الثانية على هذا السؤال: https://stackoverflow.com/questions/89228/calling-an-external-command-in-python

بشكل عام ، استخدم ملف عملية فرعية وحدة

مثال لمعالجة نتيجة استدعاء عملية فرعية

عملية فرعية يستبدل العديد من الوحدات والوظائف القديمة ، مثل os.system و os.spawn. إنه يقوم بعمل جيد في تطهير الحجج ، لذا فهو يحميك من حقن القشرة.

بالطبع ، لتشغيل برنامج نصي بيثون ثانٍ ، ليست هناك حاجة لاستدعاء CLI ، يمكنك استيرادها.


نتائج البحث

622 برنامجًا لـ "gui builder python" مع تطبيق مرشح واحد:

للمؤسسات التي تبحث عن حل فعال لإدارة بيانات التعلم

اتصل بشكل فوري ومباشر بجمهورك من خلال الرسائل النصية على نطاق واسع.

بيغام

مجموعة من وحدات Python المصممة لكتابة ألعاب الفيديو

لزج

قم بتحويل برامج سطر أوامر Python إلى تطبيق GUI كامل

سحق

جنوني (بطيء ولكن شرير) PNG تحسين الصورة

شريط تقدم سريع وقابل للتوسيع لـ Python و CLI

يسهّل برنامج بوابة مجلس الإدارة الخاص بنا إعداد مواد اللوحة ومراجعتها ، وإجراء اجتماعات أفضل ، والحفاظ على كل شيء آمنًا.

خفير

برنامج مراقبة التطبيقات وتتبع الأخطاء عبر الأنظمة الأساسية

الذعرة

يركز نظام إدارة محتوى Django على المرونة و UX

Libgit2

مكتبة تنفيذ Git محمولة ومتعددة المنصات وقابلة للربط

مشرف

SQLeo Visual Query Builder

مساعدة المستخدمين على فهم استعلامات SQL بسرعة

تساعدك PeopleForce على بناء ثقافة عالية الأداء في شركتك


Python subprocess.call () لا يعمل كما هو متوقع

لقد بدأت في حفر حفرة الأرانب هذه كوسيلة للتعرف على كيفية إنشاء برنامج نصي للإعداد في Python. كان اختيار Python متجذرًا ببساطة في إلمامي به بينما أنا متأكد من أنه سيكون هناك بدائل أفضل من Python لهذه المهمة.

كان الهدف من هذا البرنامج النصي هو تثبيت ROS على الجهاز الذي يقوم بتشغيل البرنامج النصي وكذلك إعداد بيئة catkin. يمكن العثور على الاتجاهات هنا وهنا على التوالي.

البرنامج النصي الحالي كما يلي:

عندما يتم تشغيل البرنامج النصي حاليًا ، فإنه يخطئ في الخطأ:

لقد تحققت من أن الأمر يعمل بشكل صحيح عند تنفيذه يدويًا من نافذة طرفية ، وعلى هذا النحو أعتقد أن هذا سوء فهم أساسي حول كيفية التعامل مع هذا البرنامج النصي ونطاقه داخل نظام التشغيل. الجزء الذي يسبب لي الكثير من الالتباس هو سبب الشكوى من عدم قدرته على تحديد موقع الدليل المقدم ، بينما تحققت من وجود هذا الدليل. عندما يتم طباعة الأمر بالأحرى من python ولصقه في نافذة طرفية ، لا توجد أخطاء.


شاهد الفيديو: Arcpy Getting Started Python in ArcGIS