我在构建PIRT(Python图像注册工具包库)时遇到了问题。我使用mercurial(hg clone https://bitbucket.org/almarklein/pirt
)从bitbucket下载。但是当我尝试使用python setup.py
构建它时,我收到以下错误:
Compiling pirt/splinegrid_.pyx because it changed.
[1/2] Cythonizing pirt/interp/interpolation_.pyx
Error compiling Cython file:
------------------------------------------------------------
...
# Methods
cdef void calculate_lut(self, spline_type, int N)
cdef double* get_coef(self, double t) nogil
cdef double* get_coef_from_index(self, int i)
cdef double spline_type_to_id(self, spline_type)
^
------------------------------------------------------------
pirt/interp/interpolation_.pxd:23:33: C method 'spline_type_to_id' is declared but not defined
Traceback (most recent call last):
File "setup.py", line 49, in <module>
extensions = cythonize(extensions)
File "/home/osboxes/anaconda3/lib/python3.5/site-packages/Cython/Build/Dependencies.py", line 877, in cythonize
cythonize_one(*args)
File "/home/osboxes/anaconda3/lib/python3.5/site-packages/Cython/Build/Dependencies.py", line 997, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: pirt/interp/interpolation_.pyx
我已经安装了Cython和visvis(通过Anaconda)但是建筑仍然失败。
答案 0 :(得分:1)
不幸的是,我找不到有关应在.pxd
文件中声明哪些功能的文档的文档。值得庆幸的是,人们可以在Cython/Includes
中查看现有的并得出结论。
简而言之,请更改pirt/interp/interpolation_.pxd
中的定义:
cdef double spline_type_to_id(self, spline_type)
为:
cdef double spline_type_to_id(self, spline_type) except *
再次运行setup.py
。