我正在冒险使用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 交互器中导入模块时,会抛出一个错误,指出找不到该模块。
所以,我的问题是:需要对生成的.so文件做什么才能被Python程序使用?
搜索 python 模块的同一目录中查找.so
模块。因此,您必须像安装普通python模块一样安装它,无论是默认情况下在python sys.path
上的某个地方(/usr/share/python/site-lib
或类似的东西 - 它将依赖于发行版),或者将目录添加到PYTHONPATH
环境变量。
是python使用dlopen加载模块,而不是动态链接器,所以LD_LIBRARY_PATH
(注意,没有DY
)不会帮助你。
与所有其他 Python 模块相同。它必须位于 sys.path
中给出的位置之一内。