1

我正在尝试使用 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 中,并将 DYLD_LIBRARY_PATH 的路径添加到 .bash_profile 中。当我尝试从 Python 解释器中导入模块时,会抛出一个错误,指出无法找到该模块。

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

4

2 回答 2

3

Python.so在搜索 python 的相同目录中查找模块。因此,您必须像安装普通 python 模块一样安装它,或者sys.path默认情况下位于 python 上的某个地方(/usr/share/python/site-lib或类似的地方——它依赖于分发),或者将目录添加到PYTHONPATH环境变量中。

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

于 2011-05-11T07:15:15.937 回答
0

与所有其他 Python 模块相同。它必须在 中给出的位置之一内sys.path

于 2011-05-11T07:14:49.430 回答