我正在使用 CentOS 6.5,并且希望使用比存储库中提供的版本更新的 Python、lxml、libxml2 和 libxslt2 版本。
因此,我从头开始构建 libxml2、libxslt2 和 python 2.7.8,并将所有二进制路径添加到我的 $PATH 中。 “xml2-config --cflags --libs”包括 libxml 库和包含的正确(自定义)位置。
我将 python-2.7.8 配置/make/make 安装到我的主目录,将其 bin 添加到我的路径。通过“python setup.py install”安装setuptools,然后安装easy_install pip。
最后,pip install lxml ...这找到了我的 libxml 的正确位置。
但是,“from lxml import etree”失败,因为它需要我的较新版本的 libxml,但它查看 /usr/lib64/libxml 并失败。
为什么它没有检测到我的 libxml 位置?它在安装 lxml 时检测到它,但在导入时检测不到它?
ImportError:/usr/lib64/libxml2.so.2:找不到版本“LIBXML2_2.9.0”(/home/hsundara/packages_installed/python-2.7.8/lib/python2.7/site-packages/lxml/etree 需要。所以)
但在建造时——
在以下目录之一中针对 libxml2/libxslt 进行构建:
/home/hsundara/packages_installed/libxslt-1.1.28/lib
/home/hsundara/packages_installed/libxml2-2.9.1/lib
有什么解决办法吗?
答案1
您应该能够配置lxml找到您自己的版本libxml2和库文件使用--auto-rpath
安装选项。
首先,卸载当前版本的lxml。
pip uninstall lxml
然后,将xml2-config
和添加xslt-config
到您的路径中。
export PATH=/home/hsundara/packages_installed/libxslt-1.1.28/bin:/home/hsundara/packages_installed/libxml2-2.9.1/bin:$PATH
最后,安装lxml传入auto-rpath
安装选项:
pip install lxml --install-option="--auto-rpath"