2016-06-07 80 views
0

我正在嘗試在我的wsgi(apache + flask)網站中使用python庫。如何爲apache + wsgi網站設置LD_LIBRARY_PATH

在使用該庫在一個獨立的命令腳本,我必須添加庫路徑到LD_LIBRARY_PATH

因此,這適用於獨立的腳本:

# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64 
# python script.py 

現在,當我嘗試使用這個Python庫通過Apache + wsgi,我需要將相同的路徑傳遞給apache worker。我怎麼能做到這一點?

回答

1

您編譯和安裝的Python模塊擴展需要庫嗎?如果是,編譯並安裝該Python模塊時,將LD_RUN_PATH環境變量設置爲該庫所在的目錄。這樣,該位置就嵌入了Python模塊擴展本身,並且在運行時您不需要LD_LIBRARY_PATH

使用環境變量來做到這一點的唯一方法是在Apache的啓動腳本中設置LD_LIBRARY_PATH,這樣當Apache啓動時就會根據您的需要進行設置。這意味着擺弄系統啓動腳本,因此不是理想的或總是實用的。

它可以工作,但是是不是真的那麼偉大的一個理想,甚至有可能不會正常工作的最後一個辦法,就是用:

LoadFile "/usr/local/lib/libmylib.so" 

在Apache配置。這將強制啓動時將特定庫鏈接到Apache,但取決於庫的使用方式,這可能不起作用。

+0

我編譯了c庫(現在位於/ usr/local/lib64),但沒有編譯python模塊。 python模塊是通過模塊倉庫中的一個簡單的'python setup.py install'安裝的。是否有另一種安裝python模塊的方式? – Neo

+0

我能夠使用您的第一個建議來解決問題。謝謝。 – Neo