CentOS服务器使用pyzbar报错Unable to find zbar shared library如何解决
错误原因
该报错核心是pyzbar为zbar条码识别工具的Python封装层,本身不携带底层的libzbar共享库。Windows版本的pyzbar安装包内置了预编译的对应动态库,因此运行无异常,但CentOS等Linux系统需要单独安装底层依赖。
修复方案
方案1:服务器可连接外网(优先推荐)
无需手动上传文件,直接通过包管理器安装依赖即可:
- 先安装EPEL扩展源(zbar不在CentOS默认官方源中):
yum install -y epel-release
- 安装zbar共享库:
yum install -y zbar zbar-devel
- 安装完成后重启Python应用即可,系统会自动识别默认路径下的共享库,无需额外配置。
方案2:服务器无外网权限,需手动上传文件
需要提前准备一台和目标服务器CPU架构一致、CentOS大版本完全相同的可联网机器操作:
- 在可联网机器上执行方案1的安装步骤,安装完成后查找zbar共享库的位置:
find /usr -name "libzbar.so*"
通常输出路径为/usr/lib64/libzbar.so.0、/usr/lib64/libzbar.so.0.2.0这类文件。
2. 将找到的所有libzbar开头的so文件上传到目标服务器,建议存放到项目专属的私有库目录,例如/home/flickbil/app/custom_lib/
3. 配置系统共享库搜索路径,二选一即可:
- 临时生效(每次启动应用前执行):启动应用前先执行命令
export LD_LIBRARY_PATH=/home/flickbil/app/custom_lib:$LD_LIBRARY_PATH
- 永久生效:将路径写入系统库配置
echo "/home/flickbil/app/custom_lib" >> /etc/ld.so.conf.d/custom_libs.conf ldconfig
配置完成后重新启动应用即可生效。
验证方法
激活对应Python虚拟环境后执行以下命令,无报错即为修复成功:
python -c "from pyzbar.pyzbar import decode"
内容的提问来源于stack exchange,提问作者derikS4M1
相关产品推荐
相关产品推荐

