lxml在解释器中运行,但不是通过apache / mod_wsgi

时间:2016-03-05 21:48:51

标签: python django apache lxml libxslt

我有一个需要Python(3.4)lxml包的django应用程序。我在构建我的红帽服务器环境中lxml所依赖的c共享库libxslt和libxml2时遇到了相当大的麻烦。但是,pip install lxml现在已成功完成,我可以在命令行解释器中导入和使用lxml。

当我重新启动apache时,在我的django应用程序中导入lxml会导致错误: ImportError: /usr/local/lib/python3.4/site-packages/lxml/etree.cpython-34m.so: undefined symbol: exsltMathXpathCtxtRegister

我已检查过我的LD_LIBRARY_PATH在两个环境(/ usr / lib)中的设置是否相同。

我注意到当我通过pip重新安装lxml时,pip告诉我它是针对在/ usr / lib64中找到的libxml2 / libxslt构建的。我删除了在/ usr / lib64 /中找到的所有libxml2.so和libxslt.so文件,并且发现pip继续告诉我它正在构建针对lib64,安装成功完成,并且lxml仍能正常工作命令行但不通过apache。

pip还说,它在安装中使用的检测到的libxslt版本是1.1.23。但是,我使用strace看到当我使用解释器导入时,加载的库是/usr/lib/libxslt.so.1.1.28。我不知道有任何工具或技术可以找出通过apache加载的库..

有没有人有关于发生了什么或如何调试问题的理论?提前谢谢!

1 个答案:

答案 0 :(得分:0)

通过从usr / lib64 /.

中删除libexslt.so文件来解决