找不到从导入的swig包装的模块中获得的功能

问题描述 投票:0回答:1

我想从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代替import,但是它在两个模块中都创建了相同的foo函数,我想避免这种情况

python swig
1个回答
0
投票

那个.i %import是一个Python import,因此您要查找的fooB_module.A_module.foo。您可以显式使用Python代码将A_module的一部分导入并复制到B_module。例如,具有as B_module.i

%module B_module

%pythoncode %{
import A_module
foo = A_module.foo
del A_module
%}
© www.soinside.com 2019 - 2024. All rights reserved.