【发布时间】:2023-12-19 17:59:01
【问题描述】:
我创建了一个烧瓶应用程序,我试图将它部署在 apache 服务器上。我已经安装了 python 的 conda 发行版,我在其中下载了相关模块,包括烧瓶、matplotlib 等。我正在使用 wsgi 来启动应用程序。
我遇到的问题是,当服务器运行 wsgi 脚本时,它会说尝试导入 matplotlib 时找不到正确的版本 libz
ImportError: /lib64/libz.so.1: 找不到版本“ZLIB_1.2.3.4”(/mypath/miniconda/lib/python2.7/site-packages/matplotlib/../../ 需要.././libpng16.so.16)
但是在 /mypath/miniconda/lib/libz.* 中可以找到正确的 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,这似乎都不是必需的。但这是我将尝试的下一条途径。即使这有效(但尤其是如果无效),我会很好奇是否有人对正在发生的事情有任何想法。
提前致谢。
【问题讨论】:
标签: python-2.7 mod-wsgi