gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:00:24 24 4
gpt4 key购买 nike

我创建了一个 flask 应用程序,我试图在 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 脚本将 PATH 环境变量设置为 python 的这个位置(并且系统上没有其他 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 绝不是一个好主意(即它只会破坏您的整个系统)。
因此,将适当的库从 conda 库复制到 LD_LIBRARY_PATH 中的任何文件夹是最佳解决方案。

备注 路径必须出现在 LD_LIBRARY_PATH 中的/lib64 之前(即 export LD_LIBRARY_PATH=/your/path:$LD_LIBRARY_PATH)

关于python-2.7 - 当正确版本在 python 发行版中时,为什么 wsgi 在/lib64 中寻找库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com