构建Python Image Registration Toolkit的问题

时间:2016-05-30 13:47:40

标签: python cython cythonize

我在构建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)但是建筑仍然失败。

1 个答案:

答案 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