繁体   English   中英

Python模块无法加载共享库,原因:找不到图像

[英]Python module cannot load shared library, Reason: image not found

我正在尝试使用应用程序随附的Houdini Python模块,该模块是Houdini安装文件夹的一部分,位于标准Python路径之外。 下面的安装说明,运行霍迪尼终端16.5.571脚本,并添加后/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs_virtualenv_path_extensions.pth在我的site-packages可以导入hou模块的site-packages文件夹,即Python部分。 但是,它无法加载动态库。

错误信息

Traceback (most recent call last):

File "myscript.py", line 7, in <module>
    import hou
  File "/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/hou.py", line 19, in <module>
    import _hou
ImportError: dlopen(/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/_hou.so, 2): Library not loaded: @rpath/Houdini.framework/Versions/16.5.571/Houdini
  Referenced from: /Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/_hou.so
  Reason: image not found

错误消息中提到的所有文件和文件夹都位于Houdini路径/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current其中Current是到16.5.571的符号链接。

Python模块

Resources/houdini/python2.7libs/hou.py

找到Python模块。

共享库

Resources/houdini/python2.7libs/_hou.so`

其中包含对@rpath/Houdini.framework/Versions/16.5.571/Houdini引用,可能是它正在尝试查找。

Houdini

这似乎链接到实际的dylib文件,其中包含@loader_path/Librariesdylib...@rpath/libHoudiniUI等。

我在这里阅读了从Bazel运行可能 SIP引起的Bazel的Python脚本时找不到动态库 ,但是即使将共享库ln -s放入/usr/local/lib ,仍然会发生错误。

我正在使用pyenv但尝试在系统Python环境中使用,导致相同的行为。

有什么建议么?

dyld中的答案:未加载库...原因:未加载图像使我指向正确的方向,建议使用otool重写动态库路径。

列出_hou.so加载的所有库,显示以下列表,其中@rpath/Houdini.framework/Versions/16.5.571/Houdini是导致此问题的一个。

otool -L /Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/_hou.so
/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/_hou.so:
    @rpath/Houdini.framework/Versions/16.5.571/Houdini (compatibility version 1.0.0, current version 16.5.255)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1443.14.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0)
    /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox (compatibility version 1.0.0, current version 492.0.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)

可以使用install_name_tool -change重写路径。

install_name_tool -change @rpath/Houdini.framework/Versions/16.5.571/Houdini /Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/16.5.571/Houdini /Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs/_hou.so

最好使用相对路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM