I wrote a simple script. It integrates a DE:
from scipy import integrate
def rhs(t, x):
return x
solver = integrate.ode(rhs)
solver.set_integrator('dopri5')
solver.set_initial_value(1.0, 0.0)
solver.integrate(0.2)
print solver.y
It works correct. But if I cythonize it and load from another python script, I get the error:
capi_return is NULL
Call-back cb_fcn_in___user__routines failed.
Traceback (most recent call last):
File "...\tmp\build\lib.win-amd64-2.7\test2.py", line 1, in <module>
import test
File "test.py", line 9, in init test (test.c:1113)
File "...\Anaconda\lib\site-packages\scipy\integrate\_ode.py", line 408, in integrate
self.f_params, self.jac_params)
File "...\Anaconda\lib\site-packages\scipy\integrate\_ode.py", line 1032, in run
tuple(self.call_args) + (f_params,)))
File "test.py", line 3, in test.rhs (test.c:748)
TypeError: rhs() takes exactly 2 positional arguments (1 given)
The setup.py script contains:
from distutils.core import setup
from Cython.Build import cythonize
ext_modules = cythonize(['*.py'], exclude=['setup.py'])
setup(name='some_module', version='1.0', description='bla bla', ext_modules=ext_modules)
In the second script I just call
import test
P.S. I use anaconda python-2.7 for windows7, x64. I've got the latest version of scipy. I created the testproject gitlab.