Python 2.5.4 - المستورد: لا توجد وحدة تدعى etree.elementtree

StackOverflow https://stackoverflow.com/questions/3073033

  •  28-09-2019
  •  | 
  •  

سؤال

أقوم بتشغيل Python 2.5.4 على Windows وأواصل الحصول على خطأ عند محاولة استيراد وحدات ElementTree أو CelementTree. الكود بسيط للغاية (أنا أتابع برنامج تعليمي):

import xml.etree.ElementTree as xml

root = xml.Element('root')
child = xml.Element('child')
root.append(child)
child.attrib['name'] = "Charlie"
file = open("test.xml", 'w')
xml.ElementTree(root).write(file)
file.close()

أحصل على رسالة الخطأ عندما أقوم بتشغيلها من CMD أو ولكن ليس عندما أجربها مباشرة من مترجم Python.

Traceback (most recent call last):  
File "C:\xml.py", line 31, in <module>
  import xml.etree.ElementTree as xml   
File "C:\xml.py", line 31, in <module>
  import xml.etree.ElementTree as xml
ImportError: No module named etree.ElementTree

أيضا ، لقد راجعت والوحدة موجودة في c: python25 lib xml etree

هل كانت مفيدة؟

المحلول

لقد فاتتك الخط المهم للغاية في البرنامج التعليمي

import xml.etree.ElementTree as xml

هذا يجعل xml.etree.elementtree المعروف الآن باسم XML في جميع أنحاء الوحدة.

تصادف أن يكون لدي Python 2.5.4 وقد تحقق من أن نفس الرمز لديك أعلاه يعمل:

user@Comp test$ cat test.py 
import xml.etree.ElementTree as xml

root = xml.Element('root')
child = xml.Element('child')
root.append(child)
child.attrib['name'] = "Charlie"
file = open("test.xml", 'w')
xml.ElementTree(root).write(file)
file.close()

user@Comp test$ /usr/bin/python2.5 --version
Python 2.5.4
user@Comp test$ /usr/bin/python2.5 test.py 
user@Comp test$ cat test.xml 
<root><child name="Charlie" /></root>user@Comp test$ 

لذا تحقق وتأكد من قيامك بتشغيل Python 2.5.4 وإذا كنت تحاول إعادة التثبيت. المشكلة ليست أنها بيثون 2.5.4 أو الكود الخاص بك. إنها مشكلة في التثبيت ، فأنت تقوم بتشغيل إصدار مختلف من Python ، أو هناك مشكلة غريبة أخرى.

نصائح أخرى

لأن اسم الملف الأصلي الخاص بك هو ج: xml.py

تغيير اسم الملف إلى أي اسم آخر

تلقيت نفس الخطأ report("ImportError: No module named etree.ElementTree") عند تسمية ملف الاختبار باسم xml.py. وحصلت مُثَبَّت عندما أعيد تسميته إلى شيء آخر مثل xmltest.py.

كان لدي موقف مضحك ، والذي قد يكون أو لا يكون مشابهًا لهذا الحل ووجدت حلي. لقد قمت بإنشاء الوحدة النمطية الخاصة بي لتحليل ملفات XML. أضعها في my_project_root/utilities/xml.py. متي import xml.etree.ElementTree أو xml.etree من داخل هذه الوحدة ، سأحصل على الخطأ في عنوان هذا النشر. كان يبحث في حد ذاته ، لذلك من داخل xml.py كان يحاول ذلك import etree.ElementTree, ، ولم يتمكن من العثور على حزمة أو وحدة مسماة etree. لقد غيرت اسم الوحدة النمطية إلى xml_parse.py وحذفها my_project_root/utilities/xml.pyc وعملت تماما. تذكير بسيط لاستغلال الحذر مع اتفاقيات تسمية الوحدة النمطية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top