efb-wechat-comwechat-slave icon indicating copy to clipboard operation
efb-wechat-comwechat-slave copied to clipboard

最新的commit出现pyzbar问题

Open phoenixxie0 opened this issue 10 months ago • 13 comments

在安装的时候,确认已经安装了pyzbar包 #6 27.51 Requirement already satisfied: cachetools in /usr/local/lib/python3.10/site-packages (from efb-wechat-comwechat-slave==1.0.6) (4.2.2) #6 27.51 Requirement already satisfied: requests in /usr/local/lib/python3.10/site-packages (from efb-wechat-comwechat-slave==1.0.6) (2.32.3) #6 27.51 Requirement already satisfied: qrcode in /usr/local/lib/python3.10/site-packages (from efb-wechat-comwechat-slave==1.0.6) (8.0) #6 27.51 Requirement already satisfied: pyzbar in /usr/local/lib/python3.10/site-packages (from efb-wechat-comwechat-slave==1.0.6) (0.1.9) #6 27.51 Requirement already satisfied: python-magic in /usr/local/lib/python3.10/site-packages (from efb-wechat-comwechat-slave==1.0.6) (0.4.27)

但是在运行的时候出现了如下错误日志。 Traceback (most recent call last): File "/usr/local/bin/ehforwarderbot", line 8, in sys.exit(main()) File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/main.py", line 330, in main conf = config.load_config() File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/config.py", line 59, in load_config channel = utils.locate_module(i, 'slave') File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/utils.py", line 145, in locate_module return i.load() File "/usr/local/lib/python3.10/site-packages/pkg_resources/init.py", line 2471, in load return self.resolve() File "/usr/local/lib/python3.10/site-packages/pkg_resources/init.py", line 2477, in resolve module = import(self.module_name, fromlist=['name'], level=0) File "/usr/local/lib/python3.10/site-packages/efb_wechat_comwechat_slave/init.py", line 1, in from .ComWechat import ComWeChatChannel File "/usr/local/lib/python3.10/site-packages/efb_wechat_comwechat_slave/ComWechat.py", line 7, in from pyzbar.pyzbar import decode as pyzbar_decode File "/usr/local/lib/python3.10/site-packages/pyzbar/pyzbar.py", line 7, in from .wrapper import ( File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 151, in zbar_version = zbar_function( File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 148, in zbar_function return prototype((fname, load_libzbar())) File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 127, in load_libzbar libzbar, dependencies = zbar_library.load() File "/usr/local/lib/python3.10/site-packages/pyzbar/zbar_library.py", line 65, in load raise ImportError('Unable to find zbar shared library') ImportError: Unable to find zbar shared library

phoenixxie0 avatar Feb 23 '25 11:02 phoenixxie0

zbar 需要安装外部依赖,我在 Dockerfile 里面添加了,你可以参考下,调整你的安装方式

jiz4oh avatar Feb 27 '25 03:02 jiz4oh

安装这个依赖是否可以到setup.py去添加呢?看着不太可以。

phoenixxie0 avatar Feb 27 '25 16:02 phoenixxie0

安装这个依赖是否可以到setup.py去添加呢?看着不太可以。

看着setup.py中已经有了 试一下卸载重装会安装依赖不

0honus0 avatar Feb 28 '25 01:02 0honus0

我在本地apk add zbar libzbar zbar-dev之后,依然出现类似错误 / # apk add libzbar zbar zbar-dev OK: 1005 MiB in 389 packages / # ehforwarderbot Traceback (most recent call last): File "/usr/local/bin/ehforwarderbot", line 8, in <module> sys.exit(main()) File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/__main__.py", line 330, in main conf = config.load_config() File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/config.py", line 59, in load_config channel = utils.locate_module(i, 'slave') File "/usr/local/lib/python3.10/site-packages/ehforwarderbot/utils.py", line 145, in locate_module return i.load() File "/usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2471, in load return self.resolve() File "/usr/local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2477, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/local/lib/python3.10/site-packages/efb_wechat_comwechat_slave/__init__.py", line 1, in <module> from .ComWechat import ComWeChatChannel File "/usr/local/lib/python3.10/site-packages/efb_wechat_comwechat_slave/ComWechat.py", line 7, in <module> from pyzbar.pyzbar import decode as pyzbar_decode File "/usr/local/lib/python3.10/site-packages/pyzbar/pyzbar.py", line 7, in <module> from .wrapper import ( File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 151, in <module> zbar_version = zbar_function( File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 148, in zbar_function return prototype((fname, load_libzbar())) File "/usr/local/lib/python3.10/site-packages/pyzbar/wrapper.py", line 127, in load_libzbar libzbar, dependencies = zbar_library.load() File "/usr/local/lib/python3.10/site-packages/pyzbar/zbar_library.py", line 65, in load raise ImportError('Unable to find zbar shared library') ImportError: Unable to find zbar shared library

phoenixxie0 avatar Mar 01 '25 10:03 phoenixxie0

/ # ls /usr/lib/libzbar* /usr/lib/libzbar.so /usr/lib/libzbar.so.0.3.0 /usr/lib/libzbargtk.so.0 /usr/lib/libzbarqt.so /usr/lib/libzbarqt.so.0.1.2 /usr/lib/libzbar.so.0 /usr/lib/libzbargtk.so /usr/lib/libzbargtk.so.0.0.2 /usr/lib/libzbarqt.so.0 并且能确定,确实安装了这些

phoenixxie0 avatar Mar 01 '25 10:03 phoenixxie0

发现不需要zbar-dev,只需要zbar就可以了。体积可以缩减很多

phoenixxie0 avatar Mar 01 '25 12:03 phoenixxie0

@jiz4oh 如果是需要用alpine来构建,是需要修复这个问题的

phoenixxie0 avatar Mar 30 '25 18:03 phoenixxie0

@phoenixxie0 你试试使用 https://github.com/jiz4oh/ehforwarderbot/blob/master/Dockerfile 也是使用 alphine 构建的,没有遇到这个问题

jiz4oh avatar Mar 31 '25 01:03 jiz4oh

这看起来是python3.10在alpine下存在的某个问题,你发送的连接,更换成3.100一样复现这个情况,3.11版本似乎没有此问题。

phoenixxie0 avatar Mar 31 '25 08:03 phoenixxie0

那这种就无能为力了😂

jiz4oh avatar Mar 31 '25 08:03 jiz4oh

@phoenixxie0 找到一个比较 hacky 的方法

sed -i "s|path = find_library('zbar')|path = '/usr/lib/libzbar.so.0' # find_library('zbar')|" \
        /usr/local/lib/python3.11/site-packages/pyzbar/zbar_library.py

我今天优化镜像体积的时候也遇到了这个 bug

jiz4oh avatar Apr 13 '25 12:04 jiz4oh

@jiz4oh 是的,你的修改方案看起来比我的更加简便;当然,也相对hard了一些,但有效。

phoenixxie0 avatar Apr 15 '25 14:04 phoenixxie0