cython 在cythonize

问题描述

当 cython 生成 example.c 文件时使用

cython example.pyx

这个文件包含很多预处理器指令,可以根据 Python 版本等条件有条件地选择不同的实现。是否可以选择在 cython 代码中执行相同的操作。

我确实看到了 here,它支持将 cython 条件编译为 c。 所以当我使用例如

IF PY_MAJOR_VERSION < 3:
   codepath1
ELSE
   codepath2

生成c文件时我必须提供这个值:

cython src/test.pyx --compile-time-env PY_MAJOR_VERSION=3

生成的 c 文件将只包含两个代码路径之一。所以它只兼容一个非常特定的 Python 版本,但仍然包含很多处理其他版本的代码。我正在寻找一种生成 c 文件方法,该文件包含两个代码路径并使用预处理器指令选择它们。

...
#if PY_MAJOR_VERSION < 3
   codepath1
#else
   codepath2
#endif
...

到目前为止,我还没有找到在 cython 中实现这一目标的方法。有没有办法,或者我是否必须将所有与版本相关的代码(例如,在使用 Python C-API 时)放在一个 c 文件中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)