【发布时间】:2015-04-10 05:49:36
【问题描述】:
我正在尝试为 Python 2.7 调试我的 C 扩展。我使用 python2.7 调试版本。我用setuptools 构建我的项目,而我的setup.py 有这样的行:
ext_modules=[Extension("my.extension",
["my/_extension.c"])]
当我出于某种原因调用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)
当然我的扩展没有initextension_d,它只有initextension功能。
这很不方便,因为我必须更改一些代码并将这个_d 后缀添加到导入和其他内容中。
是否可以关闭此后缀的前置?或者如何以其他方式处理该问题?也许有一些“官方”的方式?
更新 #0
我使用 Ubuntu Linux。
【问题讨论】:
-
你在什么平台上看到这个?您的回溯提到
linux。 Windows 是唯一使用_d进行调试构建的平台。请参阅下面我尝试为 Windows 平台提供答案(您可能不是故意的)。 -
你应该发布
python setup.py install的输出。 -
可能还有
setup.py本身和os.name的值。我也想知道.py扩展。它应该由.pyd或.so...
标签: python python-c-api python-c-extension