Skip to content

Eodag require Python>=3.8 for pickle protocol

When using Python 3.7.2 for s1tiling, the code crashed at execution with the following error

Traceback (most recent call last):
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/eodag/api/core.py", line 118, in build_index
    create_index = not exists_in(index_dir)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/whoosh/index.py", line 136, in exists_in
    ix = open_dir(dirname, indexname=indexname)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/whoosh/index.py", line 123, in open_dir
    return FileIndex(storage, schema=schema, indexname=indexname)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/whoosh/index.py", line 421, in __init__
    TOC.read(self.storage, self.indexname, schema=self._schema)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/whoosh/index.py", line 664, in read
    segments = stream.read_pickle()
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/whoosh/filedb/structfile.py", line 245, in read_pickle
    return load_pickle(self.file)
ValueError: unsupported pickle protocol: 5

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/il/koleck/.conda/envs/s1tiling/bin/S1Processor", line 33, in <module>
    sys.exit(load_entry_point('S1Tiling', 'console_scripts', 'S1Processor')())
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/il/koleck/s1tiling/s1tiling/S1Processor.py", line 275, in main
    with S1FileManager(config) as s1_file_manager:
  File "/home/il/koleck/s1tiling/s1tiling/libs/S1FileManager.py", line 178, in __init__
    self._dag = EODataAccessGateway(self.cfg.eodagConfig)
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/eodag/api/core.py", line 96, in __init__
    self.build_index()
  File "/home/il/koleck/.conda/envs/s1tiling/lib/python3.7/site-packages/eodag/api/core.py", line 134, in build_index
    if "unsupported pickle protocol" in ve.message:
AttributeError: 'ValueError' object has no attribute 'message'

According to Python documentation https://docs.python.org/3/library/pickle.html , pickle protocol 5 is only available from Python 3.8. It means that S1Tiling requires Python >=3.8.

Edited by Luc Hermitte