如果将导入它的模块重新加载到Python会话中,如何确保重新编译已更改的Cython代码?
例如在utils.pyx
我有类似
def func(int x):
return x**2
在我test.py
中,例如
def test_cython():
import pyximport; pyximport.install()
import utils
return utils.func(5)
我想在IPython中工作并且对utils.pyx
进行任何更改都会导致重新编译,只要我在那里重新加载test.py
,但是
import test
如果已导入test.py
并且,则似乎无效
reload(test)
从已编译的test.pyc
加载,即使utils.pyx
已更改
test.test_cython()
使用utils.func
的“旧”版本。
实现这一目标的唯一方法是在每次更改test.py
后对utils.pyx
进行修改。还有其他办法吗?
注意:我认为这与this one略有不同;尤其是this promising answer,即使我从import
中取出pyximport.install
和test_cython
语句并将它们置于test.py
的顶层,也无法解决问题。 {1}}。