2016-07-19 2 views
8

저는 파이썬을 처음 사용합니다. 이것을 실행해야합니다. TargetFinder script ("Custom Analyses")Python, "ValueError : 지원되지 않는 피클 프로토콜 : 4"오류를 처리하는 방법?

필요한 파이썬 패키지를 모두 설치하고 코드를 main.py이라는 스크립트에 복사하고 실행했습니다. 이 오류가있어 :

[[email protected]]$ 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 리눅스에서 파이썬 2.7.5를 사용하고는 피클 프로토콜은 기본적으로 파일 형식입니다 1511년 2월 7일 (코어) 운영 체제를

+0

'training.h5' 파일은 어떻게 생성 되었습니까? –

+0

잘 모르겠습니다. TargetFinder 스크립트 개발자가 모든 파일 중에서 제공했습니다 –

+0

이 경우 Python 3.4 이상이 필요합니다. – cdarke

답변

10

를 놓습니다. documentation에서 사용되는 프로토콜이 높을수록 최신 Python 버전이 생성 된 피클을 읽는 데 필요했습니다. ... Pickle 프로토콜 버전 4가 Python 3.4에 추가되었습니다. Python 버전 (2.7.5)은이 기능을 지원하지 않습니다.

파이썬 3.4 이상 (현재 3.5)으로 업그레이드하거나 세 번째 매개 변수에서 하위 프로토콜 (2)을 사용하여 피클을 pickle.dump()으로 만듭니다.

관련 문제