Cython Numpy Extension компиляция завершается с более новыми версиями - PullRequest
0 голосов
/ 29 июня 2018

Несколько месяцев назад я написал этот скелетный пакет для связи библиотеки C с Python с использованием NumPy и Cython. Когда я его создал, компиляция работала нормально, и я смог использовать код на C из Python.

Однако теперь кажется, что мои версии Python, Cython или NumPy изменились так, что пакет больше не будет компилироваться. Произошло ли изменение API в одном из этих пакетов, о которых я не знаю? Мой заголовочный файл .pxd не найден, и я получаю ряд ошибок компиляции относительно использования with nogil, таких как:

Error compiling Cython file:
------------------------------------------------------------
...
    cdef long total
    cdef long n = x.shape[0]

    # If we want to use "nogil", we have to use "x.data", not "x".
    with nogil:
        total = sum_array(x.data, n)
                         ^
------------------------------------------------------------

src/cython_wrapper.pyx:32:25: Coercion from Python not allowed without the GIL

Но важно эти ошибки не возникают с предыдущими версиями Cython (0.27.1) и NumPy (1.13.3).

Вот шаги, чтобы воспроизвести это:

Старая среда

virtualenv -p python3.6 old
cd old
source bin/activate
pip install cython==0.27.1 numpy==1.13.3
git clone https://github.com/GjjvdBurg/NumPy_C_Extension
cd NumPy_C_Extension
rm src/cython_wrapper.c
python setup.py build_ext -i
# Compilation proceeds without errors

Новая среда

virtualenv -p python3.6 new
cd new
source bin/activate
pip install cython==0.28.3 numpy==1.14.5
git clone https://github.com/GjjvdBurg/NumPy_C_Extension
cd NumPy_C_Extension
rm src/cython_wrapper.c
python setup.py build_ext -i
# Compilation fails

Любая помощь будет принята с благодарностью!

...