你怎么告诉pyximport使用cython -cplus选项?

Bri*_*ion 15 c++ python cython

pyximport非常方便,但我无法弄清楚如何让它为Cython使用C++语言选项.从命令行运行cython --cplus foo.pyx.你如何通过pyximport获得相同的效果?谢谢!

Ery*_*Sun 17

使Cython创建C++文件的一种方法是使用pyxbld文件.例如,create foo.pyxbld包含以下内容:

def make_ext(modname, pyxfilename):
    from distutils.extension import Extension
    return Extension(name=modname,
                     sources=[pyxfilename],
                     language='c++')
Run Code Online (Sandbox Code Playgroud)

  • 我对这最后一点感到好奇.pyxbld文件如何/在哪里考虑? (2认同)

ead*_*ead 5

一个更轻量级/更少侵入性的解决方案是使用setup_args/script_args,它将pyximport传递到distutils底层使用:

script_args = ["--cython-cplus"]
setup_args = {
    "script_args": script_args,
}
pyximport.install(setup_args=setup_args, language_level=3)
Run Code Online (Sandbox Code Playgroud)

的其他选项python setup.py build_ext可以以类似的方式传递,例如script_args = ["--cython-cplus", "--force"]

文档的相应部分提到了 的用法setup_args,但确切的含义可能从代码本身中最清楚(是一个很好的起点)。