[英]Module installed but can't find a shared library installed by Brew
我需要安裝一個模塊 pyzbar,它依賴於另一個名為 zbar 的模塊。 根據pypi鏈接,我首先需要通過安裝zbar
brew install zbar
然后安裝pyzbar
pip install pyzbar
在嘗試基於導入模塊的特定部分運行代碼時完成此操作后,會出現錯誤。
from pyzbar.pyzbar import decode
錯誤是 ImportError: Unable to find zbar shared library
如何檢查問題究竟來自哪里以及如何解決?
以下是我在檢查評論后采取的步驟: 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 您的系統將庫安裝在默認 python 中,而不是您想要的版本中。
安裝 python 后的默認目錄取決於您的系統。
您可以直接安裝指定哪個版本將接收庫:
python3.9 -m pip 安裝“包”
python3.7 -m pip 安裝“包”
python2.7 -m pip 安裝“包”
始終建議使用版本管理器,將版本分開並且可以單獨使用的虛擬環境
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.