在旧版本上运行Python脚本时出错

在旧版本上运行Python脚本时出错,python,xml,elementtree,Python,Xml,Elementtree,我测试了一个基于web的应用程序,它使用Python(2.7.8)脚本创建动态内容 我正在解析一些XML数据并对其执行一些操作 其中一个操作需要搜索使用ElementTree中的findall(xpath)函数的特定类型的数据 现在我需要部署的地方是一个Linux机器,它有一个较旧版本的Python(2.6.6) 由于较旧的ElementTree没有某些功能,我遇到了一些问题 我遵循了这一点。我将ElementTree从2.7.8复制到新的框中并从那里导入 它很好地导入,但现在我得到一个不同的错

我测试了一个基于web的应用程序,它使用Python(2.7.8)脚本创建动态内容

我正在解析一些XML数据并对其执行一些操作

其中一个操作需要搜索使用
ElementTree
中的
findall(xpath)
函数的特定类型的数据

现在我需要部署的地方是一个Linux机器,它有一个较旧版本的Python(2.6.6)

由于较旧的
ElementTree
没有某些功能,我遇到了一些问题

我遵循了这一点。我将
ElementTree
从2.7.8复制到新的框中并从那里导入

它很好地导入,但现在我得到一个不同的错误,如下所示:

Traceback (most recent call last):
  File "./filename_python.py", line 117, in <module>
    for ch in child.findall(xpath):
  File "/usr/lib64/python2.6/xml/etree/ElementPath.py", line 293, in findall
    return list(iterfind(elem, path, namespaces))
  File "/usr/lib64/python2.6/xml/etree/ElementPath.py", line 194, in select
    if "".join(e.itertext()) == value:
AttributeError: itertext
回溯(最近一次呼叫最后一次):
文件“/filename_python.py”,第117行,在
对于child.findall中的ch(xpath):
findall中的文件“/usr/lib64/python2.6/xml/etree/ElementPath.py”,第293行
返回列表(iterfind(元素、路径、名称空间))
文件“/usr/lib64/python2.6/xml/etree/ElementPath.py”,第194行,选择
如果“.join(例如itertext())==值:
属性错误:itertext
我无法在该框中更新Python版本,也无法添加任何模块,因此必须在本地导入任何新模块

感谢您的帮助


谢谢。

我觉得您没有正确地对2.7.x版本库进行后端口。查看堆栈跟踪,您将看到它仍然引用Python 2.6.x路径中的库:

/usr/lib64/python2.6/xml/etree/ElementPath.py

<>你也可以考虑LXML——你不需要把它安装成一个系统库。只需从中克隆,并将代码复制到您的项目目录中。

我是否需要更改初始代码以使用,还是像从lxml.etree import ElementTree一样简单?我还应该提到,为了更快的实现,我正在使用cElementTree而不是ElementTree。还有,我是否可以正确地将库向后移植,而不是使用lxml?lxml不兼容,因此您需要更改代码。如果这对您来说不是一个好的解决方案,那么看看为什么使用了错误的ElementPath.py(您没有使用本地导入的2.7版本)。