我正在尝试在 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 中安装它,因为我不认为它是软件包中的一个选项。
我在使用
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
然后就成功了。
我遇到了同样的问题,并且上述修复不起作用,所以我做了一些故障排除。沿着路径
/opt/local/lib/libexempi.dylib
和 /opt/homebrew/lib/libexempi.dylib
让我意识到,尽管运行了 brew install exempi
,但我实际上在这两个文件夹中都没有 .dylib 文件。
所以我按照以下步骤手动安装了 exempi (当你使用brew时,据说这是不必要的,但我确实安装了):
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
brew install boost
)export BOOST_ROOT=$(brew --prefix boost)
export BOOST_INCLUDEDIR=$BOOST_ROOT/include
export BOOST_LIBRARYDIR=$BOOST_ROOT/lib
./configure
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
没有处理所有这些问题的人来说,这解决了我的问题。