You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让libpng16.so.16调用本地目录libz.so.1(ZLIB_1.2.9版本问题)

问题结论

该问题和Anaconda的动态库路径设置直接相关。Linux动态链接器默认优先搜索/lib64、/usr/lib64这类系统级库路径,如果Anaconda的库目录没有被放到搜索优先级的最高位,就会出现Anaconda自带的高版本依赖库(此处为libpng16.so.16)错误加载系统低版本同名共享库(此处为系统路径下低版本libz.so.1)的问题,触发版本不匹配报错。

修复方案(按推荐优先级排序)
  • 方案1:激活对应Anaconda环境后启动服务(无副作用,优先推荐)
    正常通过conda activate <你的Django运行环境名>激活虚拟环境后,再执行Django启动命令,Anaconda会自动将当前环境的lib目录注入动态库搜索路径最前端,强制优先加载Anaconda自带的符合版本要求的libz.so.1,不会出现跨路径加载系统库的问题。
    如果是用supervisor、systemd托管Django服务,需要在启动脚本中提前加载Anaconda环境激活逻辑,参考命令片段:
    # 替换为自身环境对应的实际路径
    source /home/ec2-user/anaconda3/etc/profile.d/conda.sh
    conda activate <你的Django运行环境名>
    cd <你的Django项目根目录>
    # 替换为实际的服务启动命令,比如gunicorn、uwsgi等
    gunicorn <你的项目名>.wsgi:application
    
  • 方案2:临时指定动态库搜索路径(适合临时调试场景)
    启动Django前,手动将Anaconda的lib目录放到LD_LIBRARY_PATH变量的最前端,临时调整当前会话的动态库搜索优先级:
    export LD_LIBRARY_PATH=/home/ec2-user/anaconda3/lib:$LD_LIBRARY_PATH
    python manage.py runserver
    
    注意:该配置仅对当前终端会话生效,关闭终端后自动失效,不建议将该配置写入全局系统配置文件,避免引发其他系统程序的库版本冲突。
  • 方案3:校验Anaconda内libz软链接有效性(兜底检查)
    执行命令检查Anaconda库目录下的libz软链接是否正常:
    ls -l /home/ec2-user/anaconda3/lib/libz.so*
    
    正常输出需包含libz.so.1 -> libz.so.1.2.11的指向关系,如果软链接损坏,执行以下命令重建即可:
    cd /home/ec2-user/anaconda3/lib
    ln -sf libz.so.1.2.11 libz.so.1
    
修复效果验证

配置完成后,在启动Django的同一会话内执行以下命令,检查libpng16实际加载的libz路径:

ldd /home/ec2-user/anaconda3/lib/libpng16.so.16 | grep libz

如果输出中libz.so.1的指向路径为/home/ec2-user/anaconda3/lib/libz.so.1,说明配置生效,此时启动Django不会再触发ZLIB版本缺失的报错。

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.16 16:15:41