Python 2.5.4 - المستورد: لا توجد وحدة تدعى etree.elementtree
-
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
وعملت تماما. تذكير بسيط لاستغلال الحذر مع اتفاقيات تسمية الوحدة النمطية.