Again I was having issues using a cython compiled package with pythonxy. For some reason when running from a ipython terminal started from pythonxy, I would get a DLL load error. If I would run the python/cython program directly (i.e. from a dos box: python my_program.py) then it would run fine. By default if you compile a program with mingw you need a dll with the std c or c++ library (typically this dll has a difficult name as libgcc_s_dw2-1.dll). As I have mingw installed in more than one location (32bit, 64bit, QtSDK, Python(x,y)) I think it cannot find the right dll (although I could not detect which dll it was using). The problem can be most easily solved if you link the std library statically. This you can do by simply adding "stdc++" to your libraries field in setup.py.
So my new setup.py looks now something like
(This also shows how to automatically detect the location of the numpy include directories)
So my new setup.py looks now something like
from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext import numpy ext_modules = [Extension("BvL_cython",["model_cython.pyx"],\ libraries=["m","stdc++"],include_dirs=[numpy.get_include()])] setup( name= 'Model class', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules )
(This also shows how to automatically detect the location of the numpy include directories)
No comments:
Post a Comment