簡體   English   中英

已安裝模塊但找不到 Brew 安裝的共享庫

[英]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 安裝“包”

始終建議使用版本管理器,將版本分開並且可以單獨使用的虛擬環境

參考安裝package

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM