我试图在我的wsgi(apache + flask)网站上使用python库。
在独立命令脚本中使用库时,我必须将库路径添加到LD_LIBRARY_PATH
所以这适用于独立脚本:
# export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
# python script.py
现在当我尝试通过Apache + wsgi使用这个python库时,我需要将相同的路径传递给apache worker。我怎么能做到这一点?
答案 0 :(得分:1)
您是否已编译并安装了Python模块扩展所需的库?如果是,请在编译和安装该Python模块时将var Dgram = require("dgram");
var MessageQueue = require("./MessageQueue");
var Message = require("./Message");
function MessageServer(name, listenPort, messageQueue, bindCallBack, messageReceiveCallBack,closeCallback,errorCallback) {
this.Name = name;
this.MessageQueue = messageQueue;
this.Port = listenPort;
var datagram = Dgram.createSocket("udp4");
MessageServer.prototype.Bind = function() {
datagram.bind(this.Port);
};
MessageServer.prototype.OnReceive = function(message, info) {
var msg = new Message(message, info.address, info.port);
MessageQueue.Add(msg);
};
MessageServer.prototype.OnBind = function (datagram) {
var address = datagram.address();
console.log("server listening " + address.address + ":" + address.port);
};
datagram.on("listening",this.OnBind(datagram));
datagram.on("message",
function(msg,info) {
OnReceive(msg, info);
});
datagram.on("error", function(err) {
console.log(this.Name + " error: " + error);
});
datagram.on("close", function() {
console.log("server closing: " + Name);
});
}
module.exports = MessageServer;
环境变量设置为库所在的目录。这样,该位置嵌入在Python模块扩展中,并且在运行时不需要LD_RUN_PATH
。
使用环境变量执行此操作的唯一方法是在Apache的启动脚本中设置LD_LIBRARY_PATH
,以便在启动Apache时根据需要进行设置。这意味着摆弄系统启动脚本,因此不理想或总是实用。
可能有效的最后一种方法是使用:
可能有效,但实际上并不是很好,甚至可能不起作用。LD_LIBRARY_PATH
在Apache配置中。这将强制在启动时将特定库链接到Apache,但是根据库的使用方式,这可能不起作用。