NumPy操作时出现KeyError: '__builtins__'错误是什么原因?如何解决?
错误原因
你遇到的KeyError: '__builtins__'连带RuntimeError: Unable to configure default ndarray.__repr__报错,本质是从实验室仪器驱动/SDK获取的numpy数组未完成初始化:这类数组通常是从C扩展接口、共享内存或者其他进程直接传入当前Python进程的,numpy的内置元数据没有正确挂载,导致调用数组方法、甚至打印数组时,numpy找不到对应的内置函数实现。你在终端手动构造数组测试正常,是因为手动创建的数组元数据是完整的。
解决方法
- 第一步:对驱动返回的数组做一次深拷贝,生成当前Python进程下标准的numpy数组:
# 把仪器返回的数组复制到新的内存空间,补全所有numpy元数据 arr = np.array(raw_data[1][1], copy=True) # 也可以用np.ascontiguousarray(raw_data[1][1])实现相同效果
- 第二步:在新生成的数组上执行求最大值操作即可:
max_ccounts = arr.max(axis=0)[1] print(max_ccounts)
- 额外排查项:如果拷贝后仍然报错,检查你调用仪器SDK的逻辑,是否存在数组还没完成写入就提前读取的时序问题,可添加等待逻辑或者判断SDK返回状态后再读取数据。
内容的提问来源于stack exchange,提问作者fiziks
相关产品推荐
相关产品推荐

