ImportError: Library not loaded, dyld linking confusion

ImportError: Library not loaded, dyld linking confusion

所以我尝试使用 Py2app 导出一个使用 tkinter 并写入 excel 的 python 脚本,但我收到了这个错误;

ImportError: dlopen(/Users/James/Documents/Python/Projects/Budget/dist/automating_finances0.app/Contents/Resources/lib/python3.8/lib-dynload/PIL/_imaging.so, 2): 
Library not loaded: @loader_path/.dylibs/libopenjp2.2.3.1.dylib
  Referenced from: /Users/James/Documents/Python/Projects/Budget/dist/automating_finances0.app/Contents/Resources/lib/python3.8/lib-dynload/PIL/_imaging.so
  Reason: image not found

当我在 contents/macOS/automating_finances0 上执行 otool -L 时,我明白了;

/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 21.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 283.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1151.16.0)

我研究了@loader_path、@rpath 和 dyld 链接,但似乎无法弄清楚。我不确定为什么我的应用程序在上面的文件夹中寻找依赖项而不是 libopenjp2.2.3.1.dylib 所在的 myapp/contents/frameworks etc?我尝试通过以下方式更改搜索路径;

install_name_tool -change /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa Users/James/Documents/Python/Projects/Budget/dist/automating_finances0.app/Contents/frameworks Users/James/Documents/Python/Projects/Budget/dist/automating_finances0.app/Contents/macOS/automating_finances0

但这绝对行不通,我不太确定Cocoa是什么?新手,非常感谢任何帮助。

原来我找错地方了,错误是 _imaging.so。我没有接受这个,因为我没有将 .so 文件识别为动态库。使用 otool -L _imaging.so 显示了缺失的依赖项和宾果游戏,其中包括 libopenjp2.2.3.1.dylib。我最终只是将 myapp/contents/frameworks 的内容复制到 usr/local/lib,这似乎工作正常,尽管这似乎不是一个可靠的解决方案。