我正在尝试使用应用程序随附的Houdini Python模块,该模块是Houdini安装文件夹的一部分,位于标准Python路径之外。按照安装说明进行操作后,运行 Houdini Terminal 16.5.571 脚本并将/Applications/Houdini/Houdini16.5.571/Frameworks/Houdini.framework/Versions/Current/Resources/houdini/python2.7libs
添加到_virtualenv_path_extensions.pth
模块的site-packages
文件夹中的hou
中,可以被导入,就是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/Libraries
和dylib...@rpath/libHoudiniUI
等以及许多其他文件。
我在这里Cannot find dynamic library when running a Python script from Bazel读到,可能是SIP引起的,但是即使将ln -s
的共享库放入/usr/local/lib
之后,仍然会发生错误。
我正在使用pyenv
,但在系统Python环境中进行了尝试,导致了相同的行为。
有什么建议吗?
答案 0 :(得分:0)
dyld: Library not loaded ... Reason: Image not loaded中的答案为我指明了正确的方向,建议使用using Newtonsoft.Json;
重写动态库路径。
列出public class Item
{
public int Year { get; set; }
public string Name { get; set; }
public double Val { get; set; }
}
public class Program
{
public static void Main()
{
string json = "[{\"Year\":2000,\"Name\":\"Ala\",\"Val\":0.5},{\"Year\":2001,\"Name\":\"Ola\",\"Val\":0.6},{\"Year\":2004,\"Name\":\"Ela\",\"Val\":0.8}]";
List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json);
foreach(var item in items)
{
Console.WriteLine("Year: {0}; Name: {1}; Val: {2}", item.Year, item.Name, item.Val);
}
}
}
加载的所有库,显示以下列表,其中Item
是导致问题的列表。
otool
可以使用_hou.so
完成路径的重写。
@rpath/Houdini.framework/Versions/16.5.571/Houdini
使用相对路径可能会更好。