繁体   English   中英

SWIG:如何将 python 文件合并到 swig 生成的最终模块文件中

[英]SWIG: How to merge a python file into the final module file generated by swig

据我所知,在用于将 c++ 文件编译为 python 扩展模块的 .i 文件中,我们可以添加一些 python 代码,如下所示(示例中的示例用于添加额外的 python 代码):

/* 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:我发现在页面的分辨率在%Python代码的注释损坏#379 :使用语句%pythoncode "x.py"导入x.py的所有上下文到由痛饮生成的最终.py文件。

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

%pythoncode %{
import other
%}

或者,如果您希望该模块中的所有函数都位于扩展的命名空间中:

%pythoncode %{
from other import *
%}

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

%pythoncode "other.py"

添加额外的 Python 代码

作为提供包含 Python 代码的块的替代方法,您可以包含文件中的 Python 代码。 代码完全按照文件中的方式插入,因此可以避免 SWIG 预处理器出现任何问题。 如果您要插入一段非平凡的 Python 代码,这是一个很好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM