LeoHsiao1 / pyexiv2

Read and write image metadata, including EXIF, IPTC, XMP, ICC Profile.
GNU General Public License v3.0
206 stars 39 forks source link

issues on mac m1 #108

Open nitishsaDire opened 1 year ago

nitishsaDire commented 1 year ago

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

LeoHsiao1 commented 1 year ago

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. https://github.com/Exiv2/exiv2/issues/2173

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

LeoHsiao1 commented 4 months ago

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.

richardthegit commented 4 months ago

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.