用过共享主机跑过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'来享受没有报错的快感了,嗯。


老大,你最后一步安装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