Python, how to handle the “ValueError: unsupported pickle protocol: 4” error?

拜拜、爱过 提交于 2019-12-22 01:33:11

问题


I'm new to Python. I've to run this TargetFinder script ("Custom Analyses").

I installed all the required python packages, and copied the code into a script I named main.py, and ran it. I got this error:

[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

I've no idea about what this pickle protocol means, and also my colleagues know nothing about it.

How can I solve this problem?

I'm using Python 2.7.5 on a CentOS Linux release 7.2.1511 (Core) operating system


回答1:


The Pickle protocol is basically the file format. From the documentation, The higher the protocol used, the more recent the version of Python needed to read the pickle produced. ... Pickle protocol version 4 was added in Python 3.4, your python version (2.7.5) does not support this.

Either upgrade to Python 3.4 or later (current is 3.5) or create the pickle using a lower protocol (2) in the third parameter to pickle.dump().



来源:https://stackoverflow.com/questions/38466523/python-how-to-handle-the-valueerror-unsupported-pickle-protocol-4-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!