سؤال

ولقد تم تطوير تطبيق مع جانغو وelementtree وعلى الرغم من نشر لخادم الإنتاج لقد وجدت من كان يعمل الثعبان 2.4. لقد كنت قادرا على حزمة elementtree ولكن الآن أنا على الحصول على الخطأ:

"No module named expat; use SimpleXMLTreeBuilder instead"

للأسف لا أستطيع ترقية الثعبان حتى جلوسي مع ما حصلت. كيف يمكنني استخدام SimpleXMLTreeBuilder كما محلل و / أو سوف أحتاج إلى إعادة كتابة مدونة؟

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

المحلول

إذا كان لديك وحدة طرف ثالث يريد استخدام ElementTree (وXMLTreeBuilder من التبعية) يمكنك تغيير تعريف XMLTreeBuilder ElementTree إلى واحد التي تقدمها SimpleXMLTreeBuilder مثل ذلك:

from xml.etree import ElementTree # part of python distribution
from elementtree import SimpleXMLTreeBuilder # part of your codebase
ElementTree.XMLTreeBuilder = SimpleXMLTreeBuilder.TreeBuilder

والآن سوف ElementTree دائما استخدام SimpleXMLTreeBuilder كلما يطلق عليه.

وانظر أيضا: http://groups.google.com/group / جوجل-إلى AppEngine / browse_thread / موضوع / b7399a91c9525c97

نصائح أخرى

والتقينا نفس هذه المشكلة باستخدام الثعبان النسخة 2.6.4 على سينت أو إس 5.5.

وكانت المشكلة تحدث عندما تحاول الطبقة المغتربين لتحميل وحدات pyexpat، انظر /usr/lib64/python2.6/xml/parsers/expat.py

وتبحث داخل /usr/lib64/python2.6/lib-dynload/، لم أكن انظر "pyexpat.so" الكائن المشترك. ومع ذلك، I <م> لم رؤيتها على جهاز آخر، الذي لم يكن لديها مشكلة.

وقارنت إصدارات الثعبان (يم قائمة "الثعبان * ')، وحددت أن الجهاز يعمل بشكل صحيح كان الثعبان 2.6.5. تشغيل "python26 تحديث يم" إصلاح المشكلة بالنسبة لي.

إذا لم يفلح ذلك بالنسبة لك وأنت تريد حلا تهريجية، يمكنك نسخ ملف SO في مسار الحمل الديناميكي الخاص بك.

وعلى افتراض انك تستخدم الآن elementtree.XMLTreeBuilder، مجرد محاولة هذا بدلا من ذلك:

from elementtree import SimpleXMLTreeBuilder as XMLTreeBuilder

وويحاول توفير بالضبط نفس الوظائف ولكن باستخدام xmllib بدلا من المغتربين. وإذا فشل هذا أيضا، راجع للشغل، في محاولة:

from elementtree import SgmlopXMLTreeBuilder as XMLTreeBuilder

ومحاولة استخدام بعد تنفيذ آخر، وهذه واحدة على أساس sgmlop بدلا من ذلك.

<اقتباس فقرة>   

ومن elementtree SimpleXMLTreeBuilder استيراد كما XMLTreeBuilder

وطيب، وأنها غيرت قليلا الآن:

Traceback (most recent call last):
  File "C:\Python26\tests\xml.py", line 12, in <module>
    doc = elementtree.ElementTree.parse("foo.xml")
  File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 908, in parse
    tree = parser_api.parse(source)
  File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 169, in parse
    parser = XMLTreeBuilder()
  File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 1165, in __init__
    "No module named expat; use SimpleXMLTreeBuilder instead"
ImportError: No module named expat; use SimpleXMLTreeBuilder instead

وأعتقد أنه كان مرتبطا بشكل ثابت مع نسخة قديمة من بيثون أو شيء من هذا. هل هناك طريقة سهلة لإرفاق محلل XML لبيثون 2.6؟ ويبدو أن بعض المكتبات لتعمل فقط مع الإصدارات القديمة 8 (

ولدي نفس الخطأ كما كنت عندما كنت وضعت على سولاريس والثعبان 2.7.2. I إصلاح هذه المشكلة بعد لقد قمت بتثبيت حزمة expat الثعبان باستخدام pkgin. معرفة ما إذا كان الحل أعلاه يمكن أن يعطيك أي فكرة.

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