我想大部分时间都在cython中使用c++功能,我发现使用pyximport非常方便,但是为每个pyx模块制作pyxbld配置文件(如How do you tell pyximport to use the cython --cplus option?中所述)很烦人。可以将pyximport配置为始终为所有pyx模块生成c++输出吗?

最佳答案

这是一个hack。

以下代码猴子在get_distutils_extension中修补了pyximport函数,以便它创建的Extension对象的language属性都设置为c++

import pyximport
from pyximport import install

old_get_distutils_extension = pyximport.pyximport.get_distutils_extension

def new_get_distutils_extension(modname, pyxfilename, language_level=None):
    extension_mod, setup_args = old_get_distutils_extension(modname, pyxfilename, language_level)
    extension_mod.language='c++'
    return extension_mod,setup_args

pyximport.pyximport.get_distutils_extension = new_get_distutils_extension

将上面的代码放在pyximportcpp.py中。然后,不要使用import pyximport; pyximport.install(),而要使用import pyximportcpp; pyximportcpp.install()

关于c++ - 如何配置pyximport始终创建一个cpp文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21938065/

10-11 08:58