pandas.algos._return_false在CentOS上使用dill.dump_session导致PicklingError

时间:2014-08-26 14:29:31

标签: python python-2.7 pandas pickle dill

我有一个代码框架,涉及使用dill转储会话。这曾经工作得很好,直到我开始使用熊猫。以下代码在CentOS版本6.5上引发了PicklingError:

import pandas
import dill
dill.dump_session('x.dat')

问题似乎源于pandas.algos。事实上,运行它可以重现错误:

import pandas.algos
import dill
dill.dump_session('x.dat') / dill.dumps(pandas.algos)

错误为pickle.PicklingError: Can't pickle <cyfunction lambda1 at 0x1df3050>: it's not found as pandas.algos.lambda1

问题是,我的电脑上没有出现此错误。它们都有相同版本的pandas(0.14.1),dill(0.2.1)和python(2.7.6)。

查看坏对象,我得到:

>>> dill.detect.badobjects(pandas.algos, depth = 1)
{'__builtins__': <module '__builtin__' (built-in)>, 
'_return_true': <cyfunction lambda2 at 0x1484d70>, 
'np': <module 'numpy' from '/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/__init__.pyc'>, 
'_return_false': <cyfunction lambda1 at 0x1484cc8>, 
'lib': <module 'pandas.lib' from '/home/talkr/.local/lib/python2.7/site-packages/pandas/lib.so'>}

这似乎是由于两个操作系统(可能是不同的编译器?)对pandas.algos的不同处理。在我的PC上,dump_session没有错误,pandas.algos._return_false<cyfunction <lambda> at 0x06DD02A0>,而在CentOS上<cyfunction lambda1 at 0x1df3050>。为什么处理方式不同?

0 个答案:

没有答案