Я знаю, если этот очень старый вопрос Ошибка травления Python: TypeError: рассол объекта не возвращает список. Проблема с numpy?, но единственный данный ответ довольно неясен.
Это код, который воспроизводит проблему в Python 3.6.
import pickle
from astroquery.irsa import Irsa
from astropy import units as u
# Query region.
table = Irsa.query_region("m31", catalog="fp_psc", spatial="Cone",
radius=.5 * u.arcmin)
# Dump table.
with open('table.pkl', 'wb') as f:
pickle.dump(table, f)
# This is where the issue appears.
with open('table.pkl', 'rb') as f:
table = pickle.load(f)
При попытке загрузить маринованные данные происходит сбой:
Traceback (most recent call last):
File "/home/gabriel/Descargas/test.py", line 17, in <module>
table2 = pickle.load(f)
File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/astropy/table/column.py", line 238, in __setstate__
super_class.__setstate__(self, state)
File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/numpy/ma/core.py", line 5869, in __setstate__
super(MaskedArray, self).__setstate__((shp, typ, isf, raw))
TypeError: object pickle not returning list
Как я могу обойти это?
Используя conda, вы можете установить требования в среде Python 3 с помощью:
conda install astropy
conda install -c astropy astroquery