Python,如何处理“ValueError:unsupported pickle protocol:4”错误?

时间:2016-07-19 19:01:02

标签: python centos pickle

我是Python的新手。 我要运行这个TargetFinder script ("Custom Analyses")

我安装了所有必需的python包,并将代码复制到名为main.py的脚本中,然后运行它。 我收到了这个错误:

[davide@laptop]$ python main.py 
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    training_df = pd.read_hdf('./paper/targetfinder/K562/output-epw/training.h5', 'training').set_index(['enhancer_name', 'promoter_name'])
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 330, in read_hdf
    return store.select(key, auto_close=auto_close, **kwargs)
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 680, in select
    return it.get_result()
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 1364, in get_result
    results = self.func(self.start, self.stop, where)
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 673, in func
    columns=columns, **kwargs)
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 2786, in read
    values = self.read_array('block%d_values' % i)
  File "/usr/lib64/python2.7/site-packages/pandas/io/pytables.py", line 2327, in read_array
    data = node[:]
  File "/usr/lib64/python2.7/site-packages/tables/vlarray.py", line 677, in __getitem__
    return self.read(start, stop, step)
  File "/usr/lib64/python2.7/site-packages/tables/vlarray.py", line 817, in read
    outlistarr = [atom.fromarray(arr) for arr in listarr]
  File "/usr/lib64/python2.7/site-packages/tables/atom.py", line 1211, in fromarray
    return cPickle.loads(array.tostring())
ValueError: unsupported pickle protocol: 4

我不知道这个泡菜协议意味着什么,而且我的同事也对此一无所知。

如何解决此问题?

我在CentOS Linux版本7.2.1511(核心)操作系统上使用Python 2.7.5

3 个答案:

答案 0 :(得分:22)

Pickle协议基本上是文件格式。来自documentation协议使用的越高,读取生成的pickle所需的Python版本就越新。 ... 在Python 3.4中添加了Pickle协议版本4 ,你的python版本(2.7.5)不支持这一点。

升级到Python 3.4或更高版本(当前为3.5)或使用第三个参数中的较低协议(2)创建pickle到:=

答案 1 :(得分:3)

这有时是由于 redis 数据库中的数据不正确造成的。试试看:

sudo redis-cli flushall

答案 2 :(得分:0)

python版本问题,升级到最新python版本试试。