关于在IPython(我使用Spyder)中重新加载Cython文件的问题有很多。下面是我的实现,它似乎检查了其他问题中的所有框:
from importlib import reload
import pyximport
import sys
pyximport.install(reload_support=True)
try:
del sys.modules['cython_test.ctest']
del ctest
except:
pass
import cython_test.ctest as ctest
ctest = reload(ctest)
ctest.test()
但是,它不起作用,我必须重新启动内核以获得文件的更新版本。
如果它是相关的,下面是我如何生成.so
文件:
from setuptools import setup
from Cython.Build import cythonize
import os
file = os.environ.get("CYTHONIZE_FILE", "")
setup(ext_modules=cythonize(f"{file}.pyx"))
我将在命令行中调用它:
CYTHONIZE_FILE=ctest python setup.py build_ext --inplace
任何想法?
问题显然与构建文件和创建.so
文件有关。如果我根本不这样做(即,完全删除.so
文件并重新启动内核),我的代码工作。