You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm科学模式代码单元环境变量设置及运行报错解决

解决PyCharm代码单元中Numba缓存环境变量不生效问题

问题现象

在PyCharm科学模式下,以下代码运行整个脚本时正常执行:

#%% <- Scientific Mode: on

import os
from pathlib import Path

CACHE_DIR = Path("/home/me/numba_cache")
CACHE_DIR.touch(exist_ok=True)
os.environ["NUMBA_CACHE_DIR"] = str(CACHE_DIR)

from numba import jit


@jit(nopython=True, cache=True)
def square(x):
    return x ** 2

print(square(5))

但单独运行该代码单元时,会出现如下错误:

Traceback (most recent call last):
  File "/home/me/.pycharm_helpers/pydev/pydevconsole.py", line 364, in runcode
    coro = func()
           ^^^^^^
  File "<input>", line 11, in <module>
  File "/home/me/.pyenv/versions/3.11.1/envs/my_env/lib/python3.11/site-packages/numba/core/decorators.py", line 234, in wrapper
    disp.enable_caching()
  File "/home/me/.pyenv/versions/3.11.1/envs/my_env/lib/python3.11/site-packages/numba/core/dispatcher.py", line 863, in enable_caching
    self._cache = FunctionCache(self.py_func)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/me/.pyenv/versions/3.11.1/envs/my_env/lib/python3.11/site-packages/numba/core/caching.py", line 601, in __init__
    self._impl = self._impl_class(py_func)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/me/.pyenv/versions/3.11.1/envs/my_env/lib/python3.11/site-packages/numba/core/caching.py", line 337, in __init__
    raise RuntimeError("cannot cache function %r: no locator available "
RuntimeError: cannot cache function 'square': no locator available for file '<input>'

已尝试在运行配置中设置环境变量,但仅对整脚本运行有效,代码单元单独运行时无效。

原因分析

单独运行代码单元时,代码是在PyCharm的交互式控制台(标记为<input>)中执行的,Numba的缓存机制需要依赖真实的文件路径来定位和存储缓存文件,而交互式环境没有有效的文件定位器,因此触发报错——这和代码内设置环境变量的操作无关,是代码单元运行的上下文导致的。

解决方法

1. 临时禁用代码单元的缓存

如果只是为了测试代码单元功能,可临时将@jit装饰器的cache参数设为False,绕过缓存机制:

@jit(nopython=True, cache=False)
def square(x):
    return x ** 2

2. 在PyCharm全局控制台环境中设置变量

若需要在代码单元中保留缓存功能,可直接在PyCharm的Python控制台全局环境变量中配置NUMBA_CACHE_DIR:

  • 打开PyCharm设置(File > Settings)
  • 导航到Build, Execution, Deployment > Console > Python Console
  • 在Environment variables区域添加:NUMBA_CACHE_DIR=/home/me/numba_cache
  • 重启PyCharm后,单独运行代码单元时缓存即可正常生效

3. 将代码单元保存为独立脚本运行

如果不想修改代码或全局设置,可将当前代码单元的内容复制到一个新的.py文件中,单独运行该文件——此时Numba能识别到真实的文件路径,缓存功能正常工作。

内容的提问来源于stack exchange,提问作者GlaceCelery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:16:05