python-2.7 – 当python发行版中的正确版本时,为什么wsgi在 lib64中查找库

python-2.7 – 当python发行版中的正确版本时,为什么wsgi在 lib64中查找库,第1张

概述我创建了一个烧瓶应用程序,我正在尝试在apache服务器上部署.我已经安装了 python的conda发行版,我已经下载了相关的模块,包括flask,matplotlib等.我正在使用wsgi来启动应用程序. 我遇到的问题是当服务器运行wsgi脚本时,它失败说当尝试导入matplotlib时它无法找到正确的版本libz ImportError: /lib64/libz.so.1: version 我创建了一个烧瓶应用程序,我正在尝试在apache服务器上部署.我已经安装了 python的conda发行版,我已经下载了相关的模块,包括flask,matplotlib等.我正在使用wsgi来启动应用程序.

我遇到的问题是当服务器运行wsgi脚本时,它失败说当尝试导入matplotlib时它无法找到正确的版本libz

importError: /lib64/libz.so.1: version `ZliB_1.2.3.4′ not found (required by /mypath/miniconda/lib/python2.7/site-packages/matplotlib/../../.././libpng16.so.16)

但是,正确的libz版本可以在/mypath/miniconda/lib/libz找到.

wsgi模块是用这个版本的python构建的.另外,apache init脚本在python的这个位置设置PATH环境变量(并且系统上没有其他python 2.7).当我通过wsgi脚本打印libpng的ldd路径时,它指向应该加载的libz的python版本.

linux-vdso.so.1 => (0x00007fff9fe00000)

libz.so.1 => /mypath/miniconda/lib/python2.7/site-packages/matplotlib/../../../././libz.so.1 (0x00007fb2e4388000)

libm.so.6 => /lib64/libm.so.6 (0x00007fb2e40e8000)

libc.so.6 => /lib64/libc.so.6 (0x00007fb2e3d50000)

/lib64/ld-linux-x86-64.so.2 (0x00000035a9e00000)

那为什么要尝试从/ lib64加载?当我尝试从终端通过相同的python加载模块时,它加载正常.我知道我的环境不会像apache环境一样,但是我无法看到任何重大差异.

我没有尝试显式设置LD_liBRARY_PATH或WsgiPythonHome,看起来它们都不是必需的.但这是我要尝试的下一个途径.即使它有效(但特别是如果没有),我会好奇是否有人对于发生了什么有任何想法.

提前致谢.

解决方法 将所有文件libz.so *复制到LD_liBRARY_PATH中的任何路径

短篇小说,我有miniconda并坚持同样的问题.我意识到conda更喜欢在LD_liBRARY_PATH中搜索库而不是自己的库.

因此,您需要在LD_liBRARY_PATH中使缺少的库可用,将整个conda lib目录添加到LD_liBRARY_PATH永远不是一个好主意(即它只会破坏整个系统).
因此,将适当的lib从conda库复制到LD_liBRARY_PATH中的任何文件夹是最佳解决方案.

注意路径必须在LD_liBRARY_PATH中的/ lib64之前显示(即导出LD_liBRARY_PATH = / your / path:$LD_liBRARY_PATH)

总结

以上是内存溢出为你收集整理的python-2.7 – 当python发行版中的正确版本时,为什么wsgi在/ lib64中查找库全部内容,希望文章能够帮你解决python-2.7 – 当python发行版中的正确版本时,为什么wsgi在/ lib64中查找库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存