每当我对函数使用缓存时。。
@jit(cache=True)
def test(x):
return x
我得到一个类似于的RuntimeError。。
RuntimeError:无法缓存函数"test.test":没有可用于文件"/tmp/ipykernel_33392909/373547737.py"的定位器
。。并且是的/tmp
应该是可写的(rwxrwxrwt
(。
这里发生了什么事?
一个文件被另一个文件缓存。
当@jit编译一个函数时,它会创建一个与该函数的字节码同名的".py"文件。每次调用test
时,Numba都会尝试使用该文件,但由于缓存中没有该文件的定位器,因此失败。这个问题已经报道过了。
它似乎是由conda
和pip
的混合引起的。我以为conda
会阻止这种情况,但没有。在完全擦除了pip和conda之后,它现在可以单独使用conda。
此外,似乎还涉及到一个bug。
给外界的建议:如果你没有特殊的理由,就不要使用conda。