缓存 numba 函数会导致错误

Caching of numba functions leads to error

每当我在函数上使用缓存时,..

@jit(cache=True)
def test(x):
    return x

.. 我得到一个类似于 ..

的 RuntimeError

RuntimeError: cannot cache function 'test.test': no locator available for file '/tmp/ipykernel_3392909/373547737.py'

.. 是的,/tmp 应该是可写的 (rwxrwxrwt).

这里发生了什么?

一个文件被另一个缓存。

当@jit 编译函数时,它会创建一个同名的“.py”文件,其中包含该函数的字节码。 每次调用 test 时,Numba 都会尝试使用此文件,但都失败了,因为缓存中没有此文件的定位器。 此 issue 已被报告。

这似乎是由 condapip 的 mix-up 引起的。我以为 conda 会阻止这种情况,但没有。 完全擦除 pip 和 conda 后,现在仅使用 conda 即可。

此外,似乎还涉及bug

给外界的建议:如果没有特殊原因,不要使用conda。