2016-06-07 81 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