我正在尝试按照tutorial使用pyx,pxd和cimport来创建和使用扩展类型。
在终端中编译Cython文件时,我收到一条错误,我不知道如何纠正:
pyx文件中的 cdef class CythonClass:
表示为错误行。
File "/Library/Python/2.7/site-packages/Cython/Build/Dependencies.py", line 1056, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: CythonClass.pyx
我在MacOS Sierra上使用Cython版本.25(并且已经尝试了其他版本,每个版本都安装了pip install cython
)。 Python版本是2.7.10。
根据建议,我安装了gcc(Xcode 8.2的命令行工具),但仍然收到错误。
文件内容:
PXD:
cdef class CythonClass:
cdef:
list list1
dict d1, d2, d3, d4, d5, d6
PYX:
cdef class CythonClass:
def __init__(self):
self.list1 = []
self.d1 = {}
self.d2 = {}
self.d3 = {}
self.d4 = {}
self.d5 = {}
self.d6 = {}
setup.py(由终端中的python setup.py build_ext --inplace
调用):
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["CythonClass.pyx"]))
至少目前,我将尝试在不使用pxd文件的情况下进行编译,因为编译是针对扩展类型进行的。但是,导入扩展类型的主要功能不是编译(错误:extTypeName is not a type identifier
)。
答案 0 :(得分:0)
我在以下位置找到了解决方案: Cythonize by Command Line
阅读该页面,但更具体地转到“使用cythonize命令进行编译”部分。
您创建.pyd或.so文件:
cython yourmod.pyx
cythonize -a -i yourmod.c
为我工作。