Cython: C-Extensions for Python

Cython是一种语言,使为Python语言编写C扩展变得像使用Python本身一样简单。它基于广为人知的Pyrex,但支持更多尖端功能和优化。Cython将Python与C的强大结合在一起,让你能够编写可以调用和从C或C++代码中调用的Python代码。通过添加静态类型声明,轻松将可读的Python代码转换为平滑的C性能。使用源代码级别的调试来发现Python、Cython和C代码中的错误。有效地与大型数据集交互,例如使用多维NumPy数组。快速构建应用程序,利用大型、成熟且广泛使用的CPython生态系统。与遗留、低级或高性能库和应用中的现有代码和数据整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cython: C-Extensions for Python

About Cython

Cython is a language that makes writing C extensions for the
Python language as easy as Python itself.
It is based on the well-known Pyrex, but supports more
cutting edge functionality and optimizations.

Cython gives you the combined power of Python and C to let you

The Cython language is a superset of the Python language that
additionally supports calling C functions and declaring
C types on variables and class attributes. This allows the
compiler to generate very efficient C code from Cython code.
The C code is generated once and then compiles with all major
C/C++ compilers in CPython 2.4 and later,
including Python 3.x.
PyPy support is work in progress (on both sides)
and is considered mostly usable
in Cython 0.17.

This makes Cython the ideal language for wrapping external C libraries,
embedding CPython into existing applications, and for
fast C modules that speed up the execution of Python code.

Building wheel for pycocotools (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for pycocotools (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [520 lines of output] running bdist_wheel running build running build_py creating build/lib.linux-x86_64-cpython-38/pycocotools copying pycocotools/__init__.py -> build/lib.linux-x86_64-cpython-38/pycocotools copying pycocotools/coco.py -> build/lib.linux-x86_64-cpython-38/pycocotools copying pycocotools/mask.py -> build/lib.linux-x86_64-cpython-38/pycocotools copying pycocotools/cocoeval.py -> build/lib.linux-x86_64-cpython-38/pycocotools running build_ext Error compiling Cython file: ------------------------------------------------------------ ... np.import_array() # import numpy C function # we use PyArray_ENABLEFLAGS to make Numpy ndarray responsible to memoery management cdef extern from "numpy/arrayobject.h": void PyArray_ENABLEFLAGS(np.ndarray arr, int flags) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:27:29: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrString( <RLE*> &Rs._R[i], <char*> c_string, obj[&#39;size&#39;][0], obj[&#39;size&#39;][1] ) return Rs # encode mask to RLEs objects # list of RLE string can be generated by RLEs member function def encode(np.ndarray[np.uint8_t, ndim=3, mode=&#39;fortran&#39;] mask): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:136:11: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... bb = np.array((1,4*n), dtype=np.double) bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) PyArray_ENABLEFLAGS(bb, np.NPY_OWNDATA) return bb def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:254:11: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... # the memory management of _mask has been passed to np.ndarray # it doesn&#39;t need to be freed here # called when passing into np.array() and return an np.ndarray in column-major order def __array__(self): cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:93:13: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... def area(rleObjs): cdef RLEs Rs = _frString(rleObjs) cdef uint* _a = <uint*> malloc(Rs._n* sizeof(uint)) rleArea(Rs._R, Rs._n, _a) cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:163:9: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;list input can be bounding box (Nx4) or RLEs ([RLE])&#39;) else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:197:34: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;list input can be bounding box (Nx4) or RLEs ([RLE])&#39;) else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:197:88: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:15: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:51: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:87: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:141: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... pass elif type(obj) == np.ndarray: N = obj.shape[0] return N # convert iscrowd to numpy array cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:211:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... pass elif type(obj) == np.ndarray: N = obj.shape[0] return N # convert iscrowd to numpy array cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:211:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... if not type(dt) == type(gt): raise Exception(&#39;The dt and gt should have the same data type, either RLEs, list or np.ndarray&#39;) # define local variables cdef double* _iou = <double*> 0 cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:226:9: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... def toBbox( rleObjs ): cdef RLEs Rs = _frString(rleObjs) cdef siz n = Rs.n cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:247:9: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) objs = _toString(Rs) return objs def frPoly( poly, siz h, siz w ): cdef np.ndarray[np.double_t, ndim=1] np_poly ^ ------------------------------------------------------------ pycocotools/_mask.pyx:262:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) objs = _toString(Rs) return objs def frPoly( poly, siz h, siz w ): cdef np.ndarray[np.double_t, ndim=1] np_poly ^ ------------------------------------------------------------ pycocotools/_mask.pyx:262:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) objs = _toString(Rs) return objs def frUncompressedRLE(ucRles, siz h, siz w): cdef np.ndarray[np.uint32_t, ndim=1] cnts ^ ------------------------------------------------------------ pycocotools/_mask.pyx:272:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) objs = _toString(Rs) return objs def frUncompressedRLE(ucRles, siz h, siz w): cdef np.ndarray[np.uint32_t, ndim=1] cnts ^ ------------------------------------------------------------ pycocotools/_mask.pyx:272:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... # it doesn&#39;t need to be freed here # called when passing into np.array() and return an np.ndarray in column-major order def __array__(self): cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> self._h*self._w*self._n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:94:20: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... def area(rleObjs): cdef RLEs Rs = _frString(rleObjs) cdef uint* _a = <uint*> malloc(Rs._n* sizeof(uint)) rleArea(Rs._R, Rs._n, _a) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> Rs._n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:164:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... cdef uint* _a = <uint*> malloc(Rs._n* sizeof(uint)) rleArea(Rs._R, Rs._n, _a) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> Rs._n a = np.array((Rs._n, ), dtype=np.uint8) a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:166:62: Cannot convert &#39;uint *&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... _iouFun = _bbIou else: raise Exception(&#39;input data type not allowed.&#39;) _iou = <double*> malloc(m*n* sizeof(double)) iou = np.zeros((m*n, ), dtype=np.double) shape[0] = <np.npy_intp> m*n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:236:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;input data type not allowed.&#39;) _iou = <double*> malloc(m*n* sizeof(double)) iou = np.zeros((m*n, ), dtype=np.double) shape[0] = <np.npy_intp> m*n iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:237:64: Cannot convert &#39;double *&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;list input can be bounding box (Nx4) or RLEs ([RLE])&#39;) else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:198:72: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:15: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:29: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:71: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... cdef RLEs Rs = _frString(rleObjs) cdef siz n = Rs.n cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> 4*n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:248:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> 4*n bb = np.array((1,4*n), dtype=np.double) bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:250:63: Cannot convert &#39;BB&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... return bb def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): cdef siz n = bb.shape[0] Rs = RLEs(n) rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:257:29: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... cdef np.ndarray[np.double_t, ndim=1] np_poly n = len(poly) Rs = RLEs(n) for i, p in enumerate(poly): np_poly = np.array(p, dtype=np.double, order=&#39;F&#39;) rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:267:36: Python objects cannot be cast to pointers of primitive types Compiling pycocotools/_mask.pyx because it changed. [1/1] Cythonizing pycocotools/_mask.pyx Traceback (most recent call last): File "/home/yll/anaconda3/envs/car/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> main() File "/home/yll/anaconda3/envs/car/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main json_out[&#39;return_val&#39;] = hook(**hook_input[&#39;kwargs&#39;]) File "/home/yll/anaconda3/envs/car/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 437, in build_wheel return _build([&#39;bdist_wheel&#39;, &#39;--dist-info-dir&#39;, str(metadata_directory)]) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 425, in _build return self._build_with_temp_dir( File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 406, in _build_with_temp_dir self.run_setup() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 319, in run_setup exec(code, locals()) File "<string>", line 19, in <module> File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 183, in setup return run_commands(dist) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 199, in run_commands dist.run_commands() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 954, in run_commands self.run_command(cmd) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/command/bdist_wheel.py", line 400, in run self.run_command("build") File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command self.distribution.run_command(command) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command self.distribution.run_command(command) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 98, in run _build_ext.run(self) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run self.build_extensions() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 476, in build_extensions self._build_extensions_serial() File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 502, in _build_extensions_serial self.build_extension(ext) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 263, in build_extension _build_ext.build_extension(self, ext) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/Cython/Distutils/build_ext.py", line 131, in build_extension new_ext = cythonize( File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize cythonize_one(*args) File "/tmp/pip-build-env-t573kn7i/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1298, in cythonize_one raise CompileError(None, pyx_file) Cython.Compiler.Errors.CompileError: pycocotools/_mask.pyx [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pycocotools Successfully built easydict pathos Failed to build pycocotools ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (pycocotools)
最新发布
07-06
else: raise Exception(&#39;list input can be bounding box (Nx4) or RLEs ([RLE])&#39;) else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:197:88: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:15: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:51: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:87: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): ^ ------------------------------------------------------------ pycocotools/_mask.pyx:199:141: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... pass elif type(obj) == np.ndarray: N = obj.shape[0] return N # convert iscrowd to numpy array cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:211:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... pass elif type(obj) == np.ndarray: N = obj.shape[0] return N # convert iscrowd to numpy array cdef np.ndarray[np.uint8_t, ndim=1] iscrowd = np.array(pyiscrowd, dtype=np.uint8) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:211:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... if not type(dt) == type(gt): raise Exception(&#39;The dt and gt should have the same data type, either RLEs, list or np.ndarray&#39;) # define local variables cdef double* _iou = <double*> 0 cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:226:9: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... def toBbox( rleObjs ): cdef RLEs Rs = _frString(rleObjs) cdef siz n = Rs.n cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] ^ ------------------------------------------------------------ pycocotools/_mask.pyx:247:9: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) objs = _toString(Rs) return objs def frPoly( poly, siz h, siz w ): cdef np.ndarray[np.double_t, ndim=1] np_poly ^ ------------------------------------------------------------ pycocotools/_mask.pyx:262:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) objs = _toString(Rs) return objs def frPoly( poly, siz h, siz w ): cdef np.ndarray[np.double_t, ndim=1] np_poly ^ ------------------------------------------------------------ pycocotools/_mask.pyx:262:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) objs = _toString(Rs) return objs def frUncompressedRLE(ucRles, siz h, siz w): cdef np.ndarray[np.uint32_t, ndim=1] cnts ^ ------------------------------------------------------------ pycocotools/_mask.pyx:272:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) objs = _toString(Rs) return objs def frUncompressedRLE(ucRles, siz h, siz w): cdef np.ndarray[np.uint32_t, ndim=1] cnts ^ ------------------------------------------------------------ pycocotools/_mask.pyx:272:9: &#39;ndarray&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... # it doesn&#39;t need to be freed here # called when passing into np.array() and return an np.ndarray in column-major order def __array__(self): cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> self._h*self._w*self._n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:94:20: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... def area(rleObjs): cdef RLEs Rs = _frString(rleObjs) cdef uint* _a = <uint*> malloc(Rs._n* sizeof(uint)) rleArea(Rs._R, Rs._n, _a) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> Rs._n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:164:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... cdef uint* _a = <uint*> malloc(Rs._n* sizeof(uint)) rleArea(Rs._R, Rs._n, _a) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> Rs._n a = np.array((Rs._n, ), dtype=np.uint8) a = np.PyArray_SimpleNewFromData(1, shape, np.NPY_UINT32, _a) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:166:62: Cannot convert &#39;uint *&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... _iouFun = _bbIou else: raise Exception(&#39;input data type not allowed.&#39;) _iou = <double*> malloc(m*n* sizeof(double)) iou = np.zeros((m*n, ), dtype=np.double) shape[0] = <np.npy_intp> m*n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:236:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... else: raise Exception(&#39;input data type not allowed.&#39;) _iou = <double*> malloc(m*n* sizeof(double)) iou = np.zeros((m*n, ), dtype=np.double) shape[0] = <np.npy_intp> m*n iou = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _iou) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:237:64: Cannot convert &#39;double *&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;list input can be bounding box (Nx4) or RLEs ([RLE])&#39;) else: raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:198:72: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:15: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:29: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... raise Exception(&#39;unrecognized type. The following type: RLEs (rle), np.ndarray (box), and list (box) are supported.&#39;) return objs def _rleIou(RLEs dt, RLEs gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): rleIou( <RLE*> dt._R, <RLE*> gt._R, m, n, <byte*> iscrowd.data, <double*> _iou.data ) def _bbIou(np.ndarray[np.double_t, ndim=2] dt, np.ndarray[np.double_t, ndim=2] gt, np.ndarray[np.uint8_t, ndim=1] iscrowd, siz m, siz n, np.ndarray[np.double_t, ndim=1] _iou): bbIou( <BB> dt.data, <BB> gt.data, m, n, <byte*> iscrowd.data, <double*>_iou.data ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:200:71: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... cdef RLEs Rs = _frString(rleObjs) cdef siz n = Rs.n cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> 4*n ^ ------------------------------------------------------------ pycocotools/_mask.pyx:248:16: &#39;npy_intp&#39; is not a type identifier Error compiling Cython file: ------------------------------------------------------------ ... cdef BB _bb = <BB> malloc(4*n* sizeof(double)) rleToBbox( <const RLE*> Rs._R, _bb, n ) cdef np.npy_intp shape[1] shape[0] = <np.npy_intp> 4*n bb = np.array((1,4*n), dtype=np.double) bb = np.PyArray_SimpleNewFromData(1, shape, np.NPY_DOUBLE, _bb).reshape((n, 4)) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:250:63: Cannot convert &#39;BB&#39; to Python object Error compiling Cython file: ------------------------------------------------------------ ... return bb def frBbox(np.ndarray[np.double_t, ndim=2] bb, siz h, siz w ): cdef siz n = bb.shape[0] Rs = RLEs(n) rleFrBbox( <RLE*> Rs._R, <const BB> bb.data, h, w, n ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:257:29: Python objects cannot be cast to pointers of primitive types Error compiling Cython file: ------------------------------------------------------------ ... cdef np.ndarray[np.double_t, ndim=1] np_poly n = len(poly) Rs = RLEs(n) for i, p in enumerate(poly): np_poly = np.array(p, dtype=np.double, order=&#39;F&#39;) rleFrPoly( <RLE*>&Rs._R[i], <const double*> np_poly.data, int(len(p)/2), h, w ) ^ ------------------------------------------------------------ pycocotools/_mask.pyx:267:36: Python objects cannot be cast to pointers of primitive types Compiling pycocotools/_mask.pyx because it changed. [1/1] Cythonizing pycocotools/_mask.pyx Traceback (most recent call last): File "/home/dark/anaconda3/envs/horizon_bpu/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> main() File "/home/dark/anaconda3/envs/horizon_bpu/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main json_out[&#39;return_val&#39;] = hook(**hook_input[&#39;kwargs&#39;]) File "/home/dark/anaconda3/envs/horizon_bpu/lib/python3.8/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 437, in build_wheel return _build([&#39;bdist_wheel&#39;, &#39;--dist-info-dir&#39;, str(metadata_directory)]) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 425, in _build return self._build_with_temp_dir( File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 406, in _build_with_temp_dir self.run_setup() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 319, in run_setup exec(code, locals()) File "<string>", line 19, in <module> File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 183, in setup return run_commands(dist) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 199, in run_commands dist.run_commands() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 954, in run_commands self.run_command(cmd) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/command/bdist_wheel.py", line 400, in run self.run_command("build") File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command self.distribution.run_command(command) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command self.distribution.run_command(command) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/dist.py", line 999, in run_command super().run_command(command) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 973, in run_command cmd_obj.run() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 98, in run _build_ext.run(self) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run self.build_extensions() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 476, in build_extensions self._build_extensions_serial() File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/_distutils/command/build_ext.py", line 502, in _build_extensions_serial self.build_extension(ext) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 263, in build_extension _build_ext.build_extension(self, ext) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/Cython/Distutils/build_ext.py", line 131, in build_extension new_ext = cythonize( File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize cythonize_one(*args) File "/tmp/pip-build-env-t9zfrgzs/overlay/lib/python3.8/site-packages/Cython/Build/Dependencies.py", line 1298, in cythonize_one raise CompileError(None, pyx_file) Cython.Compiler.Errors.CompileError: pycocotools/_mask.pyx [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pycocotools
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值