我有一个模块和一个模块加载器。该模块使用 numba。
当我使用 动态加载模块后调用模块的函数时importlib,我遇到了几个错误。当我执行static导入并调用该函数时,一切正常。
当我不使用 numba 时,静态和动态导入都可以正常工作。
这是一个重现问题的简单示例:
模块mymod.py:
from numba import jit
@jit(nopython=True)
def process():
a = 5
res = a + 5
return res
Run Code Online (Sandbox Code Playgroud)
有效的模块加载器:(runb.py静态导入)
import mymod
def main():
res = mymod.process()
print(res)
if __name__=="__main__":
main()
Run Code Online (Sandbox Code Playgroud)
不工作的模块加载器:(run.py动态导入)
from pathlib import Path
import importlib.util
def main():
module_path = "./mymod.py"
spec = importlib.util.spec_from_file_location(Path(module_path).name, module_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
res = module.process()
print(res)
if __name__=="__main__":
main()
Run Code Online (Sandbox Code Playgroud)
软件上下文: