使用调试版本时,为C扩展处理"_d"后缀的最佳方法是什么?

Gil*_*tes 12 python python-c-api python-c-extension

我正在尝试调试Python 2.7的C扩展.我使用python2.7调试版本.我建立我的项目,setuptoolssetup.py有这样的台词:

ext_modules=[Extension("my.extension",
                       ["my/_extension.c"])]
Run Code Online (Sandbox Code Playgroud)

当我python setup.py install因某种原因调用扩展时编译为带_d后缀的文件,之后,在Python中,我不能这样做import my.extension,我只能这样做import my.extension_d.而我得到的是:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/my/extension_d.py", line 7, in <module>
  File "build/bdist.linux-x86_64/egg/my/extension_d.py", line 6, in __bootstrap__
ImportError: dynamic module does not define init function (initextension_d)
Run Code Online (Sandbox Code Playgroud)

当然我的扩展没有initextension_d,它只有initextension功能.

这非常不方便,因为我必须更改一些代码并将此_d后缀添加到导入和其他内容中.

是否可以关闭此后缀的前置?或者如何以其他方式处理该问题?也许有一些"官方"的方式?

更新#0

我使用的是Ubuntu Linux.

kvo*_*iev 1

为了解决这个问题,你可以在你的C模块中定义函数

void initextension_d()
{ initextension(); }
Run Code Online (Sandbox Code Playgroud)