导入 swig 生成的模块时,Python 抱怨缺少删除方法
When importing a swig generated module, Python is complaining about missing delete method
我们有一套用 swig 包装的 c++ 类 python。在 python 中导入其中一个 类 时,我们收到以下错误消息:
File ".../myobjects.py", line 176, in <module>
class RT(_object):
File ".../myobjects.py", line 187, in RT
\__swig_destroy__ = _myobjects.delete_RT
AttributeError: 'module' object has no attribute 'delete_RT'
myobjects.py RT 的 swig 生成代码如下所示:
class RT(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, RT, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, RT, name)
__repr__ = _swig_repr
def __init__(self, *args):
this = _myobjects.new_RT(*args)
try: self.this.append(this)
except: self.this = this
def getName(self): return _myobjects.RT_getName(self)
__swig_destroy__ = _myobjects.delete_RT
__del__ = lambda self : None;
创建 _myobjects.so 的 cxx 文件包含以下行:
SWIGINTERN PyObject *_wrap_delete_RT(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
RT *arg1 = (RT *) 0 ;
...
简而言之,一切按顺序出现,但我们仍然得到 python 错误。
有什么想法吗?
谢谢,
汤姆
嗯,不知道为什么会这样,但是 cxx 文件中这个之前的 Class 被两个 i 文件包含了。删除一个夹杂物解决了这个问题。
我们有一套用 swig 包装的 c++ 类 python。在 python 中导入其中一个 类 时,我们收到以下错误消息:
File ".../myobjects.py", line 176, in <module>
class RT(_object):
File ".../myobjects.py", line 187, in RT
\__swig_destroy__ = _myobjects.delete_RT
AttributeError: 'module' object has no attribute 'delete_RT'
myobjects.py RT 的 swig 生成代码如下所示:
class RT(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, RT, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, RT, name)
__repr__ = _swig_repr
def __init__(self, *args):
this = _myobjects.new_RT(*args)
try: self.this.append(this)
except: self.this = this
def getName(self): return _myobjects.RT_getName(self)
__swig_destroy__ = _myobjects.delete_RT
__del__ = lambda self : None;
创建 _myobjects.so 的 cxx 文件包含以下行:
SWIGINTERN PyObject *_wrap_delete_RT(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
RT *arg1 = (RT *) 0 ;
...
简而言之,一切按顺序出现,但我们仍然得到 python 错误。
有什么想法吗?
谢谢,
汤姆
嗯,不知道为什么会这样,但是 cxx 文件中这个之前的 Class 被两个 i 文件包含了。删除一个夹杂物解决了这个问题。