在运行 Big Sur 的 M1 Macbook Pro 上安装 Exempi 2.5.2 时出错

问题描述 投票:0回答:2

我正在尝试在 PyCharm IDE 中为 python 安装 Exempi 2.5.2,以便从 Photoshop psd 文件读取元数据。

我的代码是:

import PIL
from libxmp.utils import file_to_dict
from libxmp import consts
from psd_tools import PSDImage

if __name__ == '__main__':
    print('Hello')

我已在 PyCharm 中安装了以下软件包: Exif读取 枕头 pybundle 酿造 文档 包位 点 PSD-工具3 python-xmp-工具包 皮兹 设置工具

我收到以下错误: 回溯(最近一次调用最后一次):

文件“/Users/rajnesh/Python/uploadJpeg2SquareSpace.py”,第 9 行,位于 从 libxmp.utils 导入 file_to_dict

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/libxmp/init.py”,第 50 行,位于 从.core导入XMPMeta,XMPIterator

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/libxmp/core.py”,第 50 行,位于 从 。将 exempi 导入为 _cexempi

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/libxmp/exempi.py”,第 69 行,位于 EXEMPI = _load_exempi()

文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/libxmp/exempi.py”,第 60 行,位于 _load_exempi

引发 ExempiLoadError('Exempi 库未找到。')

libxmp.ExempiLoadError:未找到 Exempi 库。

进程已完成,退出代码为 1

Exempi的文档说我需要安装Boost我想知道这是否是问题所在。我不确定如何在 PyCharm 中安装它,因为我不认为它是软件包中的一个选项。

python installation boost pycharm xmp
2个回答
3
投票

我在使用

exempi.py
 后编辑了我的 
brew install exempi

def _load_exempi():
    """
    Loads exempi library.
    """
    path = ctypes.util.find_library('exempi')
    if path is None:
        if platform.system().startswith('Darwin'):
            if os.path.exists('/opt/local/lib/libexempi.dylib'):
                # MacPorts starndard location.
                path = '/opt/local/lib/libexempi.dylib'
    if path is None:
        m1_path = '/opt/homebrew/lib/libexempi.dylib'
        if os.path.exists(m1_path):
            path = m1_path
            
    if path is None:
        raise ExempiLoadError('Exempi library not found.')

    if os.name != "nt":
        EXEMPI = ctypes.CDLL(path)
    else:
        EXEMPI = ctypes.WinDLL(path)

    return EXEMPI

具体来说,这是我添加的。

if path is None:
        m1_path = '/opt/homebrew/lib/libexempi.dylib'
        if os.path.exists(m1_path):
            path = m1_path

然后就成功了。


0
投票

我遇到了同样的问题,并且上述修复不起作用,所以我做了一些故障排除。沿着路径

/opt/local/lib/libexempi.dylib
/opt/homebrew/lib/libexempi.dylib
让我意识到,尽管运行了
brew install exempi
,但我实际上在这两个文件夹中都没有 .dylib 文件。

所以我按照以下步骤手动安装了 exempi (当你使用brew时,据说这是不必要的,但我确实安装了):

  1. 下载并解压Exempi
curl -L -o exempi-2.5.0.tar.bz2 https://libopenraw.freedesktop.org/download/exempi-2.5.0.tar.bz2
tar -xjf exempi-2.5.0.tar.bz2
cd exempi-2.5.0
  1. 配置Boost(可能需要
    brew install boost
export BOOST_ROOT=$(brew --prefix boost)
export BOOST_INCLUDEDIR=$BOOST_ROOT/include
export BOOST_LIBRARYDIR=$BOOST_ROOT/lib
./configure
  1. 编译并安装 Exempi 到所需位置(可能需要
    brew install cmake, expat
make
sudo make install

这将其安装到

/opt/homebrew/lib
,您可以通过
ls /opt/homebrew/lib/libexempi.dylib
检查路径是否存在。

如果不存在,则可能位于

/usr/local/lib
中,您可以更改 _load_exempi 以包含该路径或将
--prefix=/opt/homebrew
添加到 ./configure 步骤。这没有发生在我身上,所以我不太确定,但对于任何
brew install exempi
没有处理所有这些问题的人来说,这解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.