所以我使用 boost::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
只要我从安装 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
请注意,它在“import B”上失败,因此 sys.path.append 命令将其引导到正确的位置。出于某种原因,boost::python 库不在 sys.path 目录中查找?有没有办法设置这个?我尝试在 boost python 中添加路径,但这似乎只影响库的编译时的东西,而不是运行 python。
有谁知道该怎么做?
谢谢!