这可能是一个简单的问题,但我在将_splitter.pyx构建到_splitter.so时遇到了一些麻烦(所以我可以尝试一些改变)。现在我正尝试使用以下命令构建原始文件:
cython -a _splitter.pyx
它会产生以下错误:
编译Cython文件时出错:
... self.index_to_samples, self.feature_values, end_negative,start_positive)
cdef int compare_SIZE_t(const void * a,const void * b)nogil:
^
_splitter.pyx:1008:34:预期')',找到' *'
我尝试了一些改动:
cython -3 _splitter.pyx
或
cython -a _splitter.pyx _splitter.pxd
但它只会产生更多错误。难道我做错了什么?
当它修复后,我打算使用命令:
gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I / usr / include / python2.7 -o _splitter.so _splitter.c
这是正确的方法吗?
非常感谢您的帮助
编辑: 将我的Cython升级到0.24版本。现在我在几行中得到以下错误:
编译Cython文件时出错:
... 特征[f_i],特征[f_j] =特征[f_j],特征[f_i]
#绘制随机阈值 current.threshold = rand_uniform(min_feature_value, max_feature_value, random_state)
^
_splitter.pyx:1547:65:在没有gil的情况下不允许转换为Python对象
答案 0 :(得分:1)
尝试升级Cython安装。旧版本(< 0.18)不支持const关键字。
答案:从Cython 0.18开始,您可以在代码中使用它 你的声明。
早期版本的Cython不直接支持const并且是必需的 以下hack将其编译成C源代码: