在python中导入cython代码

2024-09-30 22:14:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Cython代码“旋转多边形_网络管理系统.pyx“我试图用python代码导入它,但它给了我一个错误:

Cython代码是:

import numpy as np
cimport numpy as np

assert sizeof(int) == sizeof(np.int32_t)

cdef extern from "rotate_gpu_nms.hpp":
    void _rotate_nms(np.int32_t*, int*, np.float32_t*, int, int, float, int)

def rotate_gpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float_t thresh, np.int32_t device_id=0):
    cdef int boxes_num = dets.shape[0]
    cdef int boxes_dim = dets.shape[1]
    cdef int num_out
    cdef np.ndarray[np.int32_t, ndim=1] \
        keep = np.zeros(boxes_num, dtype=np.int32)
    cdef np.ndarray[np.float32_t, ndim=1] \
        scores = dets[:, 5]
    cdef np.ndarray[np.int_t, ndim=1] \
        order = scores.argsort()[::-1]
    cdef np.ndarray[np.float32_t, ndim=2] \
        sorted_dets = dets[order, :]
    thresh = <np.float>thresh
    _rotate_nms(&keep[0], &num_out, &sorted_dets[0, 0], boxes_num, boxes_dim, thresh, device_id)
    keep = keep[:num_out]
    return order[keep]

旋转式gpu_nms水电站代码是:

^{pr2}$

错误是

Traceback (most recent call last): File "inference1.py", line 17, in from libs.fast_rcnn import build_fast_rcnn1 File "../libs/fast_rcnn/build_fast_rcnn1.py", line 14, in from libs.box_utils import nms_rotate File "../libs/box_utils/nms_rotate.py", line 13, in from libs.box_utils.rotate_polygon_nms import rotate_gpu_nms ImportError: No module named 'libs.box_utils.rotate_polygon_nms'

我试图使用下面的两个命令,但它也给了我一个错误。在

import pyximport 
pyximport.install()

错误:

In file included from /usr/include/numpy/ndarraytypes.h:1788:0, from /usr/include/numpy/ndarrayobject.h:18, from /usr/include/numpy/arrayobject.h:4, from /home/ashwaq/.pyxbld/temp.linux-x86_64-3.5/pyrex/libs/box_utils/rotate_polygon_nms.c:525: /usr/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] #warning "Using deprecated NumPy API, disable it by " \ ^~~~~~~ /home/ashwaq/.pyxbld/temp.linux-x86_64-3.5/pyrex/libs/box_utils/rotate_polygon_nms.c:527:10: fatal error: rotate_gpu_nms.hpp: No such file or directory #include "rotate_gpu_nms.hpp" ^~~~~~~~~~~~~~~~~~~~ compilation terminated. Traceback (most recent call last): File "/home/ashwaq/anaconda3/lib/python3.5/distutils/unixccompiler.py", line 118, in _compile extra_postargs) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/ccompiler.py", line 909, in spawn spawn(cmd, dry_run=self.dry_run) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/spawn.py", line 36, in spawn _spawn_posix(cmd, search_path, dry_run=dry_run) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/spawn.py", line 159, in _spawn_posix % (cmd, exit_status)) distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 215, in load_module inplace=build_inplace, language_level=language_level) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 191, in build_module reload_support=pyxargs.reload_support) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyxbuild.py", line 102, in pyx_to_dll dist.run_commands() File "/home/ashwaq/anaconda3/lib/python3.5/distutils/dist.py", line 955, in run_commands self.run_command(cmd) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/Cython/Distutils/old_build_ext.py", line 185, in run _build_ext.build_ext.run(self) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/command/build_ext.py", line 339, in run self.build_extensions() File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/Cython/Distutils/old_build_ext.py", line 193, in build_extensions self.build_extension(ext) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/command/build_ext.py", line 533, in build_extension depends=ext.depends) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/ccompiler.py", line 574, in compile self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/unixccompiler.py", line 120, in _compile raise CompileError(msg) distutils.errors.CompileError: command 'gcc' failed with exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "inference1.py", line 17, in from libs.fast_rcnn import build_fast_rcnn1 File "../libs/fast_rcnn/build_fast_rcnn1.py", line 14, in from libs.box_utils import nms_rotate File "../libs/box_utils/nms_rotate.py", line 13, in from libs.box_utils.rotate_polygon_nms import rotate_gpu_nms File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 458, in load_module language_level=self.language_level) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 231, in load_module raise exc.with_traceback(tb) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 215, in load_module inplace=build_inplace, language_level=language_level) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyximport.py", line 191, in build_module reload_support=pyxargs.reload_support) File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/pyximport/pyxbuild.py", line 102, in pyx_to_dll dist.run_commands() File "/home/ashwaq/anaconda3/lib/python3.5/distutils/dist.py", line 955, in run_commands self.run_command(cmd) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/Cython/Distutils/old_build_ext.py", line 185, in run _build_ext.build_ext.run(self) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/command/build_ext.py", line 339, in run self.build_extensions() File "/home/ashwaq/anaconda3/lib/python3.5/site-packages/Cython/Distutils/old_build_ext.py", line 193, in build_extensions self.build_extension(ext) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/command/build_ext.py", line 533, in build_extension depends=ext.depends) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/ccompiler.py", line 574, in compile self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) File "/home/ashwaq/anaconda3/lib/python3.5/distutils/unixccompiler.py", line 120, in _compile raise CompileError(msg) ImportError: Building module libs.box_utils.rotate_polygon_nms failed: ["distutils.errors.CompileError: command 'gcc' failed with exit status 1\n"]

我怎样才能解决这个问题?? 我在Ubuntu中使用python

这是我使用的code

编辑: 我使用distutils作为@DavidW-mension,但是当我执行下面的命令时,它给了我一个错误:

setup.py build_ext --inplace

Compiling rotate_polygon_nms.pyx because it changed. [1/1] Cythonizing rotate_polygon_nms.pyx

Error compiling Cython file:

------------------------------------------------------------ ... import numpy as np ^

rotate_polygon_nms.pyx:1:0: 'R2CNN_FPN_Tensorflow-master.libs.box_utils.rotate_polygon_nms' is not a valid module name Traceback (most recent call last): File "setup.py", line 6, in ext_modules = cythonize("rotate_polygon_nms.pyx"), File "/home/ashwaq/.local/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 1039, in cythonize cythonize_one(*args) File "/home/ashwaq/.local/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 1161, in cythonize_one raise CompileError(None, pyx_file) Cython.Compiler.Errors.CompileError: rotate_polygon_nms.pyx


Tags: runinpybuildhomelibnpline