如何在无Python定义文件时导入已缓存的numba函数?
问题解答
不能直接导入并使用这些已编译的缓存文件,原因如下:
- Numba生成的
.nbc和.nbi缓存文件仅用于加速已有Python模块的重复编译,它们依赖原模块的结构、函数签名等元信息,并非独立的可导入实体。 - Python的导入机制只识别合法的Python模块文件(
.py、.pyc等),找不到原模块文件时,解释器不会读取这些缓存文件来还原函数定义。 - 缓存文件仅存储了编译后的机器码或中间代码,缺少Python导入所需的模块结构、函数绑定等元数据,无法被
import语句识别加载。
如果想复用已编译的Numba函数,可行的方案包括:
- 保留原Python模块的基础骨架(至少保留函数签名与
@nb.njit装饰器定义),缓存文件会自动被复用。 - 使用Numba的**AOT(提前编译)**功能,将函数编译为独立的扩展模块(
.so/.pyd文件),这类文件可以直接导入使用,无需原Python文件。
内容的提问来源于stack exchange,提问作者Thomas Wagenaar
相关产品推荐
相关产品推荐

