Cython NameError:未定义名称“ blah”。 Jupyter中的Cython魔术无法正常工作?

时间:2020-04-17 11:51:15

标签: python cython nameerror

我正在尝试使用cython在Jupyter中更快地运行某些代码,但是由于某些原因,在%% cython单元运行后,它无法“记住”函数。我在网上找到的任何其他示例(例如:https://jakevdp.github.io/blog/2017/12/11/live-coding-cython-ising-model/)似乎都不是问题。 我正在使用Cython 0.29.15和python 3.7.3。

示例:

%%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}}

1 个答案:

答案 0 :(得分:1)

我知道了。

%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可以了!!

我不知道为什么这行得通(再次,是新手),但希望这会在将来对某人有所帮助。