如何重新编译导入/重新加载由我重新加载的模块导入的已更改的Cython?

时间:2013-12-01 15:21:51

标签: python-2.7 cython python-import

如果将导入它的模块重新加载到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.installtest_cython语句并将它们置于test.py的顶层,也无法解决问题。 {1}}。

0 个答案:

没有答案