为非系统自带的python安装lxml

过共享主机跑过Django的童鞋们应该都有过自编Python的经历。其实这是让没有root权限的用户使用自定义版本的Python的通解。步骤是挺简单的,也就是configure --prefix={path} && make && make install这么一下而已。之后如果想装什么包,那么可以装上distribute/easy_install,然后用pip方便的完成。

不过有一个玩意儿确是相当麻烦的,那就是libxml2。虽然说lxml能够提供这个包的支持,但任你用pip怎么弄,回头还是无法导入。平时尽管用不上这玩儿,可是很不幸地,scrapy它得用哪……所以只能硬着头皮找解决办法。昨日为这事捣鼓了一阵,也总算把问题给解决了,赶紧记录一下,免得忘了 = =

解决方法还是挺丑陋的,其实就是再重新安装一遍这两个库。

首先需要下载libxml和libxslt的源码包,这可以到官方ftp去下载。虽然有新的都已经到2.7了,我还是按照当前系统的库版本下了个老版本的。为啥呢?我就是觉得这样比较和谐而已 -_,= 下载完以后就可以开始作业了

tar xzf libxml2-sources-2.6.26.tar.gz
tar xzf libxslt-1.1.17.tar.gz
cd libxml2-2.6.26
./configure --prefix=/home/jay/custom && make && make install
cd ../libxslt-1.1.17
./configure --prefix=/home/jay/custom && make && make install

这下基本工作就已经做完了。需要注意的是,我是直接修改了环境变量默认使用自己编译的python,如果环境变量没有设置的话,那么需要在configure的时候加上--with-python的参数指定需要安装的python的路径。

然后就是收尾的lxml的安装了。当然首先得下载好lxml的源码。

tar xzf lxml-2.2.6.tgz
cd libxml2-2.6.26
CFLAGS=-I/home/jay/custom/include/libxml2 python setup.py build
CFLAGS=-I/home/jay/custom/include/libxml2 python setup.py install

OK,万事大吉了。现在,您就可以运行python -c 'import libxml2'来享受没有报错的快感了,嗯。

对“为非系统自带的python安装lxml”的1条评论

  1. Avatar

    老大,你最后一步安装lxml有点不明白,

    tar xzf lxml-2.2.6.tgz 这个解压出来做什么?好像根本没有用到啊

    cd libxml2-2.6.26 还是进入到最先的libxml2src目录里?

    CFLAGS=-I/home/jay/custom/include/libxml2 python setup.py build
    CFLAGS=-I/home/jay/custom/include/libxml2 python setup.py install

发表评论

评论备注:

  1. 留言时的头像是Gravatar提供的服务。
  2. By submitting a comment here you grant this site a perpetual license to reproduce your words and name/web site in attribution. So, you don't fully own your words, so to speak.