Я новичок в Cython, код ниже для инициализации класса A :
- python3.6
- cython0.28
- numpy 1.14.5
a.pyx
from __future__ import division
cimport cython
from libcpp cimport bool
cimport numpy as np
import numpy as np
DTYPE = np.float64
ctypedef np.float64_t DTYPE_t
TTYPE = np.int64
ctypedef np.int64_t TTYPE_t
cdef class A():
@cython.boundscheck(False)
@cython.wraparound(False)
def __init__(self, np.ndarray[DTYPE_t, ndim=2, mode='c'] _cost_matrix):
cdef np.ndarray[DTYPE_t, ndim=2] _cost_matrix = np.atleast_2d(_cost_matrix)
...
Ошибка: Ошибка компиляции файла Cython:
------------------------------------------------------------
@cython.boundscheck(False)
@cython.wraparound(False)
def __init__(self, np.ndarray[DTYPE_t, ndim=2, mode='c'] _cost_matrix):
linear_assignment_cython.pyx:72:23: Previous declaration is here
Traceback (most recent call last):
------------------------------------------------------------
setup.py
# coding: UTF-8
"""
@author: samuel ko
"""
from distutils.core import setup
from Cython.Build import cythonize
import numpy
setup(
name="haha",
ext_modules=cythonize("a.pyx"),
include_dirs=[numpy.get_include()],
)
Интересно, позиция include_dirs
должна быть пустотой, указывающей на абсолютные dirs?
Директория моего основного пути: /usr/local/lib/python3.6/dist-packages/numpy/core/include
, и я должен заменить его на numpy.get_include()
но все равно не работает.
Действительно надеюсь, что ваша доброта поможет, большое спасибо ^. ^ ~