我如何解决zbar问题?

时间:2018-01-23 18:04:03

标签: python fedora zbar

在Fedora Linux 26上尝试在python下导入zbar时,我收到以下错误:

>>> import zbar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "zbar/__init__.py", line 1, in <module>
    from .zbar import *
  File "zbar/zbar.py", line 70, in <module>
    _ZB = load_zbar()
  File "zbar/zbar.py", line 63, in load_zbar
    '\n\n'.join(err_txt))
RuntimeError: zbar/_zbar.c:
zbar/_zbar.c: invalid ELF header

搜索此问题的解决方案确实导致我another StackOverflow question建议安装相应的软件包,但由于我已经使用我的软件包管理器安装了zbar和zbar-devel,因此它没有特别有用,dnf 。我使用the module's website.

上提供的单个指令安装了这个python库本身

“无效的ELF标题”是什么意思?我应该采取哪些措施来解决这个问题?简而言之,我如何让zbar工作?

2 个答案:

答案 0 :(得分:1)

通常,这意味着该软件包是为与您使用的架构不同的架构而构建的。 http://zbar.sourceforge.net/download.html 检查链接,我没有看到Fedora 26列出。

根据Mattdm的评论: 另一种可能性是Pypi包已经过时(上次更新2009)。您通过包管理器安装,这是最新版本,然后通过Pip(旧版本)执行安装。旧版本覆盖了正确的版本。 Pypi包版本为0.10。 fedora软件包版本应该是0.20。运行pip freeze | grep zbar使用正确的点数版本。

答案 1 :(得分:0)

看起来python绑定包含在上游zbar源代码中,但由于某种原因未与Fedora打包在一起。 (有一个zbar-pygtk,但我认为这不是你想要的。)我认为最好的办法是在Fedora中询问包的维护者(参见https://src.fedoraproject.org/rpms/zbar)以构建python绑定

看起来最新的上游发布大约十年前,PyPi模块似乎就是基于此。 Fedora的软件包更新,基于https://linuxtv.org/downloads/zbar/的内容。来自tarball中的NEWS文件:

version 0.20 (2017-04-11):
  As upstream didn't have any version since 2009, created a ZBar fork at linuxtv.org. This release improves a lot V4L2 support, by using libv4l2
  to handle formats that are alien to ZBar, making it compatible with a lot
  more webcam models. Qt support was also updated, making it compatible
  with Qt5. ZBar now have two other GUI applications (zbarcam-qt and
  zbarcam-gtk). With zbarcam-qt, it is now possible to adjust the camera
  controls, making easier to read barcodes using a camera.

可能旧的模块和较新的(分叉的)zbar不能很好地协同工作。如果“与包装商的谈话”路线不起作用,或者速度不够快,我建议删除Fedora软件包,从源代码构建zbar,然后重试。