簡體   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