关于 .pyx文件的编译和导入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 .pyx文件的编译和导入相关的知识,希望对你有一定的参考价值。
参考技术A Date: 2020/03/21Author: CW
前段时间学习了 NMS(非极大值抑制) 的各种版本实现,其中包括 Cython 版本,需要对 .pyx文件进行编译,在此针对学习内容记录一番。
首先确保安装了Cython。
以文件名为 nms.pyx 为例,新建一个用于编译的.py文件,比如 setup.py,内容如下图所示。
接着执行该py文件: python setup.py build_ext --inplace 即可完成编译, 最终会生成一个 .c文件。
若编译过程中报错: numpy/arrayobject.h”: No such file or directory ,则需要修改下setup.py文件,内容变为如下:
红框所示为增加的内容,最后再按照上述方法执行该文件进行编译即可。
和正常py模块一样导入即可,比如要导入以上的 nms.pyx,则为 import nms。
如提示无法导入,则尝试在 import 相应包之前添加如下内容:
import pyximport
pyximport.install()
python / cython编译pyx:致命错误:capsule.h:没有这样的文件或目录
【中文标题】python / cython编译pyx:致命错误:capsule.h:没有这样的文件或目录【英文标题】:python/cython compiling pyx: fatal error: capsule.h: No such file or directory 【发布时间】:2015-11-05 02:02:16 【问题描述】:我最近在一个 python 项目中工作,我需要导入一些 .pyx
文件。
但是,我很难将其导入为 .pyx
并使用以下行进行编译:
import pyximport
pyximport.install()
from . import kl
错误是
fatal error: capsule.h: No such file or directory
而在kl.pyx
文件中,capsule.h
的用法如下:
cdef extern from "capsule.h":
void* Capsule_AsVoidPtr(object ptr)
我不确定我应该做什么。请帮我一点忙。
或者,python脚本是否可以直接导入已编译的.c
(在Linux中)文件,而不是导入.pyx
并编译它?
当我用命令行编译它时,它编译成功,但我不知道我的 IDE(PyCharm)如何导入那个.c
文件。
非常感谢。
【问题讨论】:
【参考方案1】:你错过了一些库,你需要安装 capsule.h 的源代码。
【讨论】:
以上是关于关于 .pyx文件的编译和导入的主要内容,如果未能解决你的问题,请参考以下文章