我有一个使用Ogre3D通过C++包装器模块编写的Python应用程序。当试图运行我的应用程序我可以设置Python的@executable_path
python /path/to/myapp.py
我得到的错误
的dlopen(./ MyOgreWrapper.so,2):库未加载: @executable_path /../框架/ Ogre.framework /path/to/MyOgreWrapper.so原因:/Versions/1.9.0/Ogre 从引用没有找到图片
我从那里MyOgreWrapper.so所在的目录中运行它,这样MyOgreWrapper.so能被Python找到。 Ogre.framework位于../Frameworks相对于MyOgreWrapper.so的位置。
$otool -l MyOgreWrapper.so
MyOgreWrapper.so:
@rpath/MyOgreWrapper.so (compatibility version 0.0.0, current version 0.0.0)
@executable_path/../Frameworks/Ogre.framework/Versions/1.9.0/Ogre (compatibility version 1.9.0, current version 1.9.0)
...
我怀疑发生这种情况是因为@executable_path设置为python可执行文件的路径。
有没有办法从Python设置环境,使@executable_path是当前目录?我知道如果我在MyOgreWrapper.so中改变Ogre的路径和其他一些依赖于@loader_path的路径,所有这些都将工作,但这不是它是如何从盒子出来的,我宁愿不必)
我认为[这](http://stackoverflow.com/questions/4934806/python-how-to-find-scripts-directory)是你在找什么。 – Travis 2014-10-06 23:12:17