所以我創建了兩個模塊::蟒:使用升壓導入相關的Python庫從升壓蟒蛇
BOOST_PYTHON_MODULE(A) { ... }
BOOST_PYTHON_MODULE(B) { ... }
,使得B依賴於A.然後我嘗試使用Python代碼來調用它們:
import sys
sys.path.append('path/to/modules/')
import A
import B
... # python body
最後我所說的python腳本從終端:
python path/to/python/script.py
這隻要我EXECUT完美的作品e從我安裝boost :: python模塊的目錄中執行終端命令。但是,如果我把它從任何其他目錄中我得到的錯誤
File "path/to/python/script.py", line 6, in <module>
import B
importError: dlopen(path/to/B.so, 2): Library not loaded: A.so
Referenced from: path/to/B.so
Reason: image not found
注意,它失敗的「進口B」所以sys.path.append命令它引導到正確的位置。由於某些原因,boost :: python庫不在sys.path目錄中查找?有沒有辦法設置它?我試圖在boost python中添加路徑,但這似乎只在庫的編譯時纔會產生影響,而不是在運行python。
有誰知道該怎麼辦?
謝謝!
你爲什麼要dlopen lib?您可以在編譯時設置依賴項 – balki
@balki:'dlopen'是'import'行爲的一部分。如果沒有在解釋器中靜態鏈接擴展,解釋器將如何加載C++庫? –