Cython NameError: имя «бла» не определено. Cython magi c в Jupyter не работает должным образом? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь ускорить выполнение некоторого кода в Jupyter, используя cython, но по какой-то причине он не «запоминает» функции после запуска ячейки %% cython. Похоже, что это не проблема с любыми другими примерами, которые я нашел в Интернете (например: https://jakevdp.github.io/blog/2017/12/11/live-coding-cython-ising-model/). Я использую Cython 0.29.15 и python 3.7.3.

Пример:

%load_ext cython
%%cython

def function(x):
    y = 2*x
    return y
function(1)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-d7befaefa369> in <module>
----> 1 function(1)

NameError: name 'function' is not defined

Я пробовал cpdef и cdef но они выводят ту же ошибку.

Другой пример:

%%cython 

cpdef int a = 0
for i in range(10):
    a += i

print(a)

Ничего не печатается

Следующая ячейка:

print(a)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-12-bca0e2660b9f> in <module>
----> 1 print(a)

NameError: name 'a' is not defined

1 Ответ

0 голосов
/ 19 апреля 2020

Я получил его на работу.

%load_ext cython
%%cython

def function(x):
    y = 2*x
    return y
function(1)
2

Возможно, возникли некоторые проблемы при установке. Я не уверен, я новичок в этом деле, но

вот что я сделал:

. Попытка переустановки Cython-- не сработала.

. Попытка переустановки anaconda3-- не сработала.

. Заметил, что мой терминал использует python2, затем переключил это на python3 (https://dev.to/irfnhm/how-to-set-python3-as-a-default-python-version-on-mac-4jjf)

. Затем переустановил anaconda3 (https://towardsdatascience.com/how-to-successfully-install-anaconda-on-a-mac-and-actually-get-it-to-work-53ce18025f97)

. Теперь Cython работает !!

Я понятия не имею, почему это сработало (опять же, новичок), но надеюсь, что это кому-то поможет в будущем возможно.

...