CentOS 6.3 上的 Python lxml etree
Posted
技术标签:
【中文标题】CentOS 6.3 上的 Python lxml etree【英文标题】:Python lxml etree on CentOS 6.3 【发布时间】:2013-01-09 05:42:10 【问题描述】:我的服务器上有 Centos 6,我一直在尝试为其安装一些软件包(模块)。我刚刚将 Windows 上的那些带到了/usr/lib/python2.6/site-packages
中的 ftp 客户端,但是当我运行其中一个脚本时 - lxml 给了我一个错误:
File "plugins/util/http.py", line 12, in <module>
from lxml import etree, html
File "/usr/lib/python2.6/site-packages/lxml/html/__init__.py", line 12, in <module>
ImportError: cannot import name etree
相同的代码在 Windows 7 和 Linux Ubuntu 10.04 上完美运行。
有谁知道它为什么返回这个错误?我没有修改任何东西,只是将模块从 windows 移动到我的 vps 上的 python2.6 目录。
@root:
>>> import lxml;print lxml
<module 'lxml' from '/usr/lib/python2.6/site-packages/lxml/__init__.pyc'>
>>>
@ig
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -I/tmp/pip-build/lxml/src/lxml/includes -I /usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.6/src/lxml/lxml.etree.o
无法执行 gcc:没有这样的文件或目录
错误:命令“gcc”失败,退出状态为 1
【问题讨论】:
import lxml; print lxml
打印什么?
@root,编辑了我的第一篇文章。
当您尝试从解释器中导入 etree 时,您是否遇到相同的错误?或者,如果您将在解释器中使用的同一行添加到脚本的开头,它会打印相同的结果吗?
@root,是的,它仍然给我上面的错误。
【参考方案1】:
lxml
不是纯 Python 模块。它主要是用Cython 编写的,因此可以编译为本机代码。 Windows 机器上的二进制文件与 CentOS(和一般的 Linux)不兼容。
最好的办法是按照on installing lxml
的说明进行操作,即安装libxslt-devel
和libxml2-devel
软件包并使用pip
编译lxml
或自己手动编译。如果您自己编译,there's a previous question 提供一些有用的信息和更多信息,请访问 lxml
网站。
安装
我没有 CentOS 机器来测试这个。最简单的安装方法是通过 ip,它应该可以通过 Yum 以包的形式提供。如果没有,您可以使用以下命令安装它(来自distribute 的文档,pip 的先决条件):
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip
从那里,只需运行:
pip install lxml
它应该可以正常安装。
如果您想跳过 pip(尽管最终,pip 使管理依赖项变得容易得多,所以值得这样做)
-
在PyPI 上找到合适的lxml 版本
从下载地址下载源码(应该是
tar.gz
文件)
使用tar -xzf lxml-<version>.tar.gz
解压tar存档
cd
进入解压目录并运行python setup.py install
请注意,如果您的安装只能由 root 修改,则可能需要以 root 身份运行上述任何命令。安装命令为python distribute_setup.py
、easy_install pip
和python setup.py install
。
【讨论】:
"已经安装了软件包 libxml2-devel-2.7.6-8.el6_3.4.i686 和最新版本" + "已经安装了软件包 libxslt-devel-1.1.26-2.el6_3.1.i686安装和最新版本”好的,所以我现在要做的就是使用 pip 或我自己编译它?你能告诉我如何自己编译它,从来不用处理这样的东西.. 感谢您提供的信息,我使用 pip 完成了它,因为它看起来更简单一些,但我仍然遇到一些错误。我编辑了我的第一篇文章,因为它使我的评论太长了。我想安装差不多完成了,我做了所有应该做的事情。【参考方案2】:或者从 EPEL 安装(最简单的方法):
# install EPEL if you don't have it yet
sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# instal python-lxml
sudo yum -y install python-lxml
【讨论】:
以上是关于CentOS 6.3 上的 Python lxml etree的主要内容,如果未能解决你的问题,请参考以下文章
zabbix 2.2.2在centos 6.3 x86_64上的安装
如何在没有Internet的情况下升级CentOS 6.3上的开发人员工具?
lxml 用于 Qpython3(Android 上的 Python3)