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

Linux下用PyInstaller打包Python3.10程序时遇libpng依赖错误

解决PyInstaller打包opencv时libpng缺失的问题

这个错误是因为PyInstaller没自动把opencv依赖的libpng库打包进可执行文件目录,导致运行时找不到对应库文件。下面是几种可行的解决办法:

  • 定位libpng库的路径
    先在系统里找到libpng16的具体位置,执行以下命令:

    ldd $(python -c "import cv2; print(cv2.__file__)") | grep libpng
    

    或者用find命令全局搜索:

    find /usr/lib -name "libpng16*.so*"
    

    执行后会得到类似/usr/lib/x86_64-linux-gnu/libpng16.so.16的路径。

  • 方法1:打包时手动添加库文件
    在PyInstaller命令中用--add-binary参数指定库的路径,格式为源路径:目标路径,目标路径填.表示将库放到可执行文件的同级目录:

    python3 -m PyInstaller --add-binary "/usr/lib/x86_64-linux-gnu/libpng16.so.16:." compare_format.py
    
  • 方法2:修改spec文件重新打包
    如果已经生成了compare_format.spec文件,打开它找到Analysis配置段,在binaries列表中添加库的路径配置:

    a = Analysis(
        ['compare_format.py'],
        pathex=[],
        binaries=[('/usr/lib/x86_64-linux-gnu/libpng16.so.16', '.')],  # 添加这一行
        datas=[],
        ...
    )
    

    保存后执行以下命令重新打包:

    python3 -m PyInstaller compare_format.spec
    
  • 方法3:改用系统包管理器安装的opencv
    如果之前用pip安装的是opencv-python,可以换成系统包管理器提供的版本(以Ubuntu为例):

    pip uninstall opencv-python
    sudo apt-get install python3-opencv
    

    系统版本的opencv依赖库路径更规范,PyInstaller更容易自动识别并打包所需依赖。

完成打包后,进入dist/compare_format目录检查是否存在libpng16相关文件,再运行可执行文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:53:27