2016-03-05 72 views
0

我有一個需要Python(3.4)lxml包的django應用程序。在我的紅帽服務器環境中構建lxml依賴的c共享庫libxslt和libxml2時遇到了相當多的麻煩。但是,pip install lxml現在可以成功完成,我可以在命令行解釋器中導入和使用lxml。lxml在解釋器中運行,但不通過apache/mod_wsgi

當我重新啓動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加載..

有沒有人有什麼理論或如何調試問題?提前致謝!

回答

0

通過從usr/lib64 /刪除libexslt.so文件來修復。

相關問題