【问题标题】:OverflowError in Spyder variable explorerSpyder 变量资源管理器中的溢出错误
【发布时间】:2019-06-05 19:10:33
【问题描述】:

我想在 Spyder 的变量资源管理器中查看 pandas 数据框。

当我在变量资源管理器窗口中单击数据框“名称”时,会执行一系列文件(spyder_kernel.py、datapub.py、datapub.py 和 serialize.py),它们是 anaconda 包的一部分.但是,在执行 serialize.py 时,会显示以下消息:

序列化对象

buffers.insert(0, pickle.dumps(cobj, PICKLE_PROTOCOL))

溢出错误:无法序列化大于 4 GiB 的字节对象

数据框也不显示。有什么解决办法吗?谢谢。

【问题讨论】:

    标签: python pandas dataframe spyder


    【解决方案1】:

    (这里是 Spyder 维护者) 你提到的问题在 Python 3.4 中得到了修复(根据this answer),它添加了一个新的 Pickle 协议。

    但是,这对我们来说有点棘手,因为 Spyder 和为其 IPython 控制台提供支持的内核在不同的进程中运行,并且都使用 Python。我们将在 Spyder 4(将于今年发布)中解决这个问题,方法是检测两者是否都在 Python 3.4+ 中运行,以便能够使用正确的 Pickle 协议。

    【讨论】:

    • 我使用的是 python 3.6。因此,重新表述您的答案-尽管根本问题已解决,但尚未在 Spyder 中实施该修复?有解决办法吗?除了 ipython 控制台中的平淡输出之外,我如何查看数据框或其列属性?谢谢。
    • 这不是 Spyder 中没有实现该修复,而是我们不能这样做以保持与 Python 2 的兼容性。原因是用户可以选择作为我们的 IPython 控制台的 Python 解释器Python 2 版本,但 Spyder 在 Python 3 中运行,反之亦然。所以我们需要使用在两个 Python 版本中都可以使用的 pickle 协议,这不是协议 4,而是协议 2。
    • 但是,再想一想,我们可以让控制台知道 Spyder 正在运行的 Python 版本,因此我们可以指示它根据其和 Spyder 的 Python 版本使用正确的 pickle 协议。但是这项工作需要对我们处理控制台和 Spyder 之间通信的方式进行一些重要的更改,因此我们只能在 Spyder 4 中解决它,因为 Spyder 3 目前处于维护模式。我打开了this issue,以防你想跟踪它。
    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2021-07-15
    • 2023-04-07
    • 2018-04-21
    • 2019-10-13
    相关资源
    最近更新 更多