找不到导入的 swig 包装模块中的函数



我想从SWIG包装的C++类中创建几个Python模块。 问题是模块无法相互导入。

这是A_module.i文件

%module A_module
%inline
%{
void foo(){}
%}

它可以毫无问题地编译,因此.py脚本中我可以执行以下操作:

import A_module
A_module.foo()

现在我想创建导入A_module并调用 foo 的B_module。 这是 B_module.i 文件

%module B_module
%import A_module.i

当我在.py做这样的事情时

import B_module
B_module.foo()

它给出了一个错误 syaing 模块没有属性 foo。

我找到的解决方案是使用 %include 而不是导入,但它在两个模块中创建相同的 foo 函数,我想避免这种情况

那个.i%import是一个Pythonimport,所以你正在寻找的foo就像B_module.A_module.foo一样。您可以显式使用 Python 代码将部分A_module导入和复制到B_module中。例如,具有B_module.i

%module B_module
%pythoncode %{
import A_module
foo = A_module.foo
del A_module
%}

最新更新