[英]Can I set @executable_path from Python
我有一个用Python编写的应用程序,它通过C ++包装器模块使用Ogre3D。 尝试运行我的应用程序时
python /path/to/myapp.py
我得到错误
dlopen(./ MyOgreWrapper.so,2):库未加载:@executable_path /../ Frameworks / Ogre.framework / Versions / 1.9.0 / Ogre引用自:/path/to/MyOgreWrapper.so原因:找不到图像
我从MyOgreWrapper.so所在的目录中运行它,以便可以通过Python找到MyOgreWrapper.so。 Ogre.framework相对于MyOgreWrapper.so的位置位于../Frameworks中。
$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,这一切都会起作用,但这不是开箱即用的方式,我宁愿不必这样做。)
不,无法从可执行文件内控制@executable_path
。 @executable_path
由动态加载程序dyld
解析,它使用它加载的可执行文件的路径。 它对于任何给定的可执行文件都是固定的。
另外,如果可以更改它,则可能会破坏该进程尝试加载的其他内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.