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

Function from imported swig wrapped module not found

我想从 SWIG-wrapped C++ 类 创建几个 Python 模块。 问题是模块不能相互导入。

这里是A_module.i文件

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

编译没有问题,因此在 .py 脚本中我可以这样做:

import A_module
A_module.foo()

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

%module B_module
%import A_module.i

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

import B_module
B_module.foo()

它给出一个错误 syaing module has no attribute foo.

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

那个 .i %import 是 Python import,所以 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
%}