使用 pyximport 重新编译 .pyx 失败
Recompiling .pyx with pyximport failed
我写了 fib.pyx
包含这样的斐波那契函数
def fib(int n):
cdef int i
cdef double a=0., b=1.
for i in range(n):
a,b = a+b, a
return a
我得到了 pyd 模块
import pyximport
pyximport.install()
import fib
效果很好。但是当我稍微编辑 fib.pyx
并尝试导入它时,更改并没有毫无错误地反映出来。
重新启动后 ipython,我尝试了
pyximport.install(reload_support=True)
import fib
fib.fib(10) # good result
# edit fib.pyx
from importlib import reload
reload(fib)
重新加载很顺利,因为它成功地重新加载了现有的 fib.pyd
模块。但是我得到了较旧的 fib 函数的结果。
如何用 import fib
重新编译 fib.pyx
?
不可能吗?
Environment:
Python 3.4.3
Windows 7
IPython 3.2.1
试试autoreload,如果不行恐怕你得重启内核进程了。
[1]: %load_ext autoreload
[2]: %autoreload 2
我写了 fib.pyx
包含这样的斐波那契函数
def fib(int n):
cdef int i
cdef double a=0., b=1.
for i in range(n):
a,b = a+b, a
return a
我得到了 pyd 模块
import pyximport
pyximport.install()
import fib
效果很好。但是当我稍微编辑 fib.pyx
并尝试导入它时,更改并没有毫无错误地反映出来。
重新启动后 ipython,我尝试了
pyximport.install(reload_support=True)
import fib
fib.fib(10) # good result
# edit fib.pyx
from importlib import reload
reload(fib)
重新加载很顺利,因为它成功地重新加载了现有的 fib.pyd
模块。但是我得到了较旧的 fib 函数的结果。
如何用 import fib
重新编译 fib.pyx
?
不可能吗?
Environment:
Python 3.4.3
Windows 7
IPython 3.2.1
试试autoreload,如果不行恐怕你得重启内核进程了。
[1]: %load_ext autoreload
[2]: %autoreload 2