在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工作?
答案 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,然后重试。