繁体   English   中英

我可以从Python设置@executable_path吗

[英]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.

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