我需要安装一个模块 pyzbar,它依赖于另一个名为 zbar 的模块。根据 pypi link我首先需要通过安装 zbar
brew install zbar
然后安装pyzbarpip install pyzbar
在尝试基于导入模块的特定部分运行代码时完成此操作后,会出现错误。from pyzbar.pyzbar import decode
错误是ImportError: 找不到 zbar 共享库
如何检查问题究竟来自哪里以及如何解决?
以下是我在查看评论后采取的步骤:
1-尝试查找 libzbar 文件以及如何将其链接到路径,以便 pyzbar 文件 zbar_library.py 可以找到它。 libzbar 文件位于此位置/opt/homebrew/Cellar/zbar/0.23.90 由 homebrew 安装,而不是在 usr/local/lib 中(令人惊讶的是,我的 mac 上不存在这样的目录)。我将zbar lib文件的位置添加到路径的方式是
export DYLD_LIBRARY_PATH=/opt/homebrew/lib
当我在运行 python 的 conda 环境中时,在终端中。现在,当尝试在导入 pyzbar 时运行 python 时,它会发现一些东西并且不再给出“找不到共享库”错误,而是给出以下错误: File "/Users/username/miniconda3/envs/my_env/lib/python3.7/site-packages/pyzbar/zbar_library.py", line 66, in load
libzbar = cdll.LoadLibrary(path)
File "/Users/username/miniconda3/envs/my_env/lib/python3.7/ctypes/__init__.py", line 442, in LoadLibrary
return self._dlltype(name)
File "/Users/username/miniconda3/envs/my_env/lib/python3.7/ctypes/__init__.py", line 364, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(/opt/homebrew/lib/libzbar.dylib, 6): no suitable image found. Did find:
/opt/homebrew/lib/libzbar.dylib: mach-o, but wrong architecture
/opt/homebrew/Cellar/zbar/0.23.90/lib/libzbar.0.dylib: mach-o, but wrong architecture
/opt/homebrew/lib/libzbar.dylib: mach-o, but wrong architecture
/opt/homebrew/Cellar/zbar/0.23.90/lib/libzbar.0.dylib: mach-o, but wrong architecture
最佳答案
您可能有多个导致此类问题的 python/pip 版本。为了确定这一点,您可以尝试
python3.9 -m pip install pyzbar
python3.9
from pyzbar.pyzbar import decode
如果导入仍然有任何错误,请通过执行包含所有已安装 pip 包的列表pip freeze --all
关于python - 已安装模块但找不到 Brew 安装的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67543439/