LeoHsiao1/pyexiv2

issues on mac m1

nitishsaDire opened this issue · 3 comments

Hey, I have built as per build instructions for Darwin. https://github.com/LeoHsiao1/pyexiv2/tree/master/pyexiv2/lib
Build was successful as it generated exiv2api.so file. But when I import pyexif2 it is giving following error.

>>> import pyexiv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/tsm/Downloads/thumbnail_experiments/pyexiff/pyexiv2/pyexiv2/__init__.py", line 6, in <module>
    from .core import *
  File "/Users/tsm/Downloads/thumbnail_experiments/pyexiff/pyexiv2/pyexiv2/core.py", line 4, in <module>
    from .lib import exiv2api
  File "/Users/tsm/Downloads/thumbnail_experiments/pyexiff/pyexiv2/pyexiv2/lib/__init__.py", line 25, in <module>
    import exiv2api
ImportError: dlopen(/Users/tsm/Downloads/thumbnail_experiments/pyexiff/pyexiv2/pyexiv2/lib/py3.8-darwin/exiv2api.so, 0x0002): symbol not found in flat namespace '__ZN5Exiv210BasicErrorIcE6setMsgEv'

Thanks in advance

Hi, exiv2 is currently released as a pre-compiled package for the AMD64 platform via GitHub Action. If you are using it on ARM64 platform, you need to compile exiv2 manually, which requires C++ knowledge and some difficulty. Sorry I'm not familiar with C++ either.
Exiv2/exiv2#2173

After compiling exiv2 successfully, it is time to compile pyexiv2.

Hi!
I just released pyexiv2 v2.14.0, which provides the wheel package on macos-14 with arm64 architecture.

The work behind the scenes is simple:
GitHub Action used to offer some macos-12 servers with amd64 architecture. Now GitHub Action provides some macos-14 servers with arm64 architecture.
https://github.com/actions/runner-images/tree/main?tab=readme-ov-file

Maybe you don't need to use pyexiv2 anymore, but this answer, I hope, will help others.

Thanks @LeoHsiao1 !
This is working for me on an M3 mac, however there were other dependencies: brotli and gettext. I.e.:

brew install inih gettext brotli

I guess these are pretty commonly installed as I must have already had them on my dev machine, but weren't present on a clean production machine.