Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 当python发行版中有正确的版本时,为什么wsgi要在/lib64中查找库_Python 2.7_Mod Wsgi - Fatal编程技术网

Python 2.7 当python发行版中有正确的版本时,为什么wsgi要在/lib64中查找库

Python 2.7 当python发行版中有正确的版本时,为什么wsgi要在/lib64中查找库,python-2.7,mod-wsgi,Python 2.7,Mod Wsgi,我已经创建了一个flask应用程序,试图将其部署在apache服务器上。我已经安装了python的conda发行版,在那里我下载了相关模块,包括flask、matplotlib和其他模块。我正在使用wsgi启动应用程序 我遇到的问题是,当服务器运行wsgi脚本时,它失败了,表示在尝试导入matplotlib时,它找不到正确的libz版本 ImportError:/lib64/libz.so.1:找不到版本'ZLIB_1.2.3.4'(由/mypath/miniconda/lib/python2.

我已经创建了一个flask应用程序,试图将其部署在apache服务器上。我已经安装了python的conda发行版,在那里我下载了相关模块,包括flask、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所需)

但是,libz的正确版本位于/mypath/miniconda/lib/libz*

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

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_路径中的任何路径

说来话长,我有一只迷你康达,我也在同一个问题上纠缠不清。我意识到康达更喜欢在LD_library_路径中搜索库,而不是自己的libs

因此,您需要在LD_library_路径中提供缺少的库,将整个conda lib目录添加到LD_library_路径从来都不是一个好主意(即,它只是破坏了整个系统)。 因此,将适当的库从conda library复制到LD_library_路径中的任何文件夹是最好的解决方案

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