cython
1PYTHON setup.py build_ext -i
2PYTHON main.py
3
4############# setup.py ############
5
6from distutils.core import setup
7from Cython.Build import cythonize
8
9setup(ext_modules = cythonize('cimport_numpy.pyx'))
10
11############# numpy.pxd ############
12
13# A fake Numpy module. This defines a version of _import_array
14# that always fails. The Cython-generated call to _import_array
15# happens quite early (before the stringtab is initialized)
16# and thus the error itself handling could cause a segmentation fault
17# https://github.com/cython/cython/issues/4377
18
19cdef extern from *:
20"""
21#define NPY_FEATURE_VERSION
22static int _import_array(void) {
23PyErr_SetString(PyExc_ValueError, "Oh no!");
24return -1;
25}
26"""
27int _import_array() except -1
28
29############# cimport_numpy.pyx ###########
30
31cimport numpy
32
33############# main.py ####################
34
35try:
36import cimport_numpy
37except ImportError as e:
38print(e)
39else:
40assert(False)
41