web-dev-qa-db-ja.com

Python、「ValueError:unsupported pickle protocol:4」エラーの処理方法

私はPythonが初めてです。これを実行する必要があります TargetFinderスクリプト( "カスタム分析")

必要なすべての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

このpickleプロトコルが何を意味するのか私にはわかりませんし、同僚もそれについて何も知りません。

この問題を解決するにはどうすればよいですか?

CentOS Linuxリリース7.2.1511(コア)オペレーティングシステムでPython 2.7.5を使用しています

21
DavideChicco.it

Pickleプロトコルは基本的にファイル形式です。 ドキュメントから、使用するプロトコルが高ければ高いほど、Python生成されたピクルスを読み取るために必要なバージョンが新しい。...Pickleプロトコルバージョン4がPython 3.4、your = python version(2.7.5)はこれをサポートしていません。

Python 3.4以降(現在は3.5))にアップグレードするか、pickle.dump()の3番目のパラメーターで下位プロトコル(2)を使用してpickleを作成します。

22
cdarke