SWIG:如何将python文件合并到swig

时间:2017-01-20 23:53:57

标签: python c++ swig

据我所知,在.i文件中,为了将c ++文件编译为python扩展模块,我们可以添加一些python代码,如下所示(例如来自example for adding additional python code):

/* Rewrite the high level interface to set_transform */
%pythoncode %{
def set_transform(im,x):
   a = new_mat44()
   for i in range(4):
       for j in range(4):
           mat44_set(a,i,j,x[i][j])
   _example.set_transform(im,a)
   free_mat44(a)
%}

然后,python函数出现在创建的python扩展模块中。

如果我有许多python函数,我想将它们添加到创建的python模块中,我能做什么?我不想把所有的python代码都放到

%pythoncode %{
...
%}

环境。

感谢每一个人。

PS:我想要的是将python文件的上下文合并到swig生成的最终.py模块文件中。

PSS:我在页面Comments in %pythoncode damaged #379中找到了解决方案:使用语句%pythoncode "x.py" x.py 的所有上下文导入到由...生成的最终.py文件中痛饮。

2 个答案:

答案 0 :(得分:1)

您可以将代码放在另一个Python模块中,然后:

%pythoncode %{
import other
%}

或者,如果您希望该模块中的所有功能都在扩展程序的命名空间中:

%pythoncode %{
from other import *
%}

答案 1 :(得分:0)

根据@ xhao79对另一个答案的评论:

%pythoncode“ other.py”

Adding additional Python code

作为提供包含Python代码的块的替代方法,您可以 包含文件中的Python代码。该代码完全插入 文件,因此可以避免SWIG预处理程序出现任何问题。它是 如果您有大量的Python代码,这是一个很好的方法 插入。