如何为python2.6升级lxml

2024-10-01 15:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

运行python脚本时收到以下错误:

Traceback (most recent call last):
  File "/var/scripts/SchoolClosureManager/SchoolClosureManager.py", line 210, in <module>
    runnable.run()
  File "/var/scripts/SchoolClosureManager/SchoolClosureManager.py", line 18, in run
    reporter = SchoolClosureReporter(xml.name)
  File "/var/scripts/SchoolClosureManager/SchoolClosureManager.py", line 40, in __init__
    document = objectify.fromstring(xml, parser)
  File "lxml.objectify.pyx", line 1826, in lxml.objectify.fromstring (src/lxml/lxml.objectify.c:18625)
  File "lxml.etree.pyx", line 2532, in lxml.etree.fromstring (src/lxml/lxml.etree.c:48634)
  File "parser.pxi", line 1536, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:72156)
ValueError: Unicode strings with encoding declaration are not supported.

我发现了这个bug报告:https://bugs.launchpad.net/lxml/+bug/683069,它基本上说它是一个bug,并且已经Fixed in trunk rev. 79947

我能更新lxmldist包吗?在

我目前正在Ubuntu 8.04上运行python2.6.5。在


Tags: runinpysrcvarlinescriptsxml
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:37

这在Ubuntu11.10上运行;我不确定它是否能与Ubuntu8.04兼容:

sudo apt-get install libxslt1-dev

如果您使用的是virtualenv(为了安全性和灵活性,我建议您使用):

^{pr2}$

如果不使用virtualenv,可以卸载Ubuntu包lxml:

sudo apt-get remove python-lxml

然后在系统范围内安装最新的lxml软件包:

sudo pip install  upgrade lxml
sudo pip install cssselect

更新以显示根据评论中的讨论找到的安装方法。注意,这并没有解决OP看到的ValueError异常;它只更新了lxml的版本。

注意,pip可执行文件是一个Python脚本,由特定的Python安装运行。在许多Python安装中使用一个pip是可能的,但是由于硬盘空间相对便宜,大多数人会为每个Python安装安装一个pip可执行文件。在

因此,如果您的系统上有多个Python安装,那么使用与目标Python可执行文件链接的pip可执行文件是很重要的。在

在手术的情况下

import sys; print(sys.executable)

返回

/usr/local/bin/python2.6

既然存在/usr/local/bin/pip

sudo /usr/local/bin/pip install  upgrade lxml
sudo /usr/local/bin/pip install cssselect

是适当的命令。在


要测试您使用的是哪个版本的lxml:

In [38]: import lxml.etree as ET

In [44]: ET.__version__
Out[44]: u'3.2.0'

In [45]: ET.LIBXML_COMPILED_VERSION
Out[46]: (2, 7, 8)

In [47]: ET.LIBXSLT_COMPILED_VERSION
Out[48]: (1, 1, 26)    

要检查正在使用的模块的位置:

In [57]: import lxml.etree as ET

In [58]: ET
Out[58]: <module 'lxml.etree' from '/home/unutbu/.virtualenvs/dev/lib/python2.7/site-packages/lxml/etree.so'>

相关问题 更多 >

    热门问题