应放置共享对象文件的位置?

时间:2011-05-11 07:09:14

标签: c++ python binding shared-objects pybindgen

我正在冒险尝试使用pybindgen为Python创建C / C ++绑定。我按照“构建它(GCC说明)”中概述的步骤创建了示例文件的绑定:

http://packages.python.org/PyBindGen/tutorial.html#a-simple-example

运行make会生成一个.so文件。如果我理解.so文件是如何工作的,我应该能够将共享对象中的类import转换为Python。但是,我不确定将文件放在何处以及如何让Python知道它在哪里。另外,原始的c / c ++源文件是否需要附带.so文件?

到目前为止,我已尝试将该文件放在/ usr / local / lib中,并将该路径添加到.bash_profile的DYLD_LIBRARY_PATH。当我尝试从Python interpeter中导入模块时,会抛出一个错误,指出无法找到该模块。

所以,我的问题是:生成的.so文件需要做些什么才能被Python程序使用?

2 个答案:

答案 0 :(得分:3)

Python在搜索python的目录中查找.so个模块。所以你必须像普通的python模块一样安装它,默认情况下是python的sys.path上的某个地方(/usr/share/python/site-lib或类似的东西 - 它依赖于分发)或者将目录添加到{{ 1}}环境变量。

使用dlopen加载模块的python,而不是动态链接器,所以PYTHONPATH(注意,没有LD_LIBRARY_PATH)对你没用。

答案 1 :(得分:0)

与所有其他Python模块相同。它必须位于sys.path中的其中一个位置。