import pandas_datareader выдает ImportError: невозможно импортировать имя «is_list_like»

Я работаю в виртуальной среде. Я могу импортировать и работать в pandas без ошибок, но когда я пытаюсь import pandas_datareader

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
from matplotlib import style
import pandas_datareader as web

выдает следующую ошибку -

Traceback (most recent call last):
  File "stock.py", line 6, in <module>
    import pandas_datareader as web
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'
(env) xxxxx@xxxxx-yyyyy ~/pyt $ python stock.py
Traceback (most recent call last):
  File "stock.py", line 6, in <module>
    import pandas_datareader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'

person Raj    schedule 17.05.2018    source источник
comment
какая у тебя версия панды?   -  person MaxU    schedule 17.05.2018
comment
версия панды 0.23.0   -  person Raj    schedule 17.05.2018
comment
Похоже, ваша версия pandas_datareader несовместима с новой версией Pandas 0.23.   -  person MaxU    schedule 17.05.2018
comment
Вполне возможно. Позвольте мне очистить его и установить более старую версию. Потом проверю еще раз спасибо.   -  person Raj    schedule 17.05.2018
comment
@MaxU хорошо работает с 0.21.0. Спасибо   -  person Raj    schedule 17.05.2018


Ответы (6)


Я встречаю эту ошибку и нашел способ ее решить. Мои версии pandas и pandas_datareader — 0.23 и 0.6.

Python 3.6.5 (default, Apr  1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas_datareader
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'

введите здесь описание изображения

Поскольку is_list_like перемещается в pandas.api.types, я изменяю файл fred.py, который выделен на картинке. Я заменяю from pandas.core.common import is_list_like на from pandas.api.types import is_list_like, и это работает.

введите здесь описание изображения

person huanggh    schedule 18.05.2018
comment
Вы можете поставить pd.core.common.is_list_like = pd.api.types.is_list_like перед импортом pandas_datareader, чтобы вам не нужно было редактировать fred.py. - person ramiro; 18.05.2018
comment
Я установил более раннюю версию Pandas, и она работает нормально. Так что, если кто-то хочет использовать pandas 0.23, то это правильный метод. - person Raj; 20.05.2018
comment
Это тоже работает, все, что я сделал, это открыл файл и изменил строку 1 на это: from pandas.api.types import is_list_like вещь, которую я не понимаю, это то, что кажется, что это был патч некоторое время назад, и в последней библиотеке есть это, которое это то, что у меня есть, не включает этот патч. в любом случае, спасибо за подсказку. - person Jozcar; 09.06.2018
comment
@ramiro, в какой файл ты поместил эту строку? - person DataGirl; 30.06.2018
comment
@DataGirl Я поместил это в свой скрипт Python непосредственно перед тем, как написать import pandas_datareader. - person ramiro; 01.07.2018
comment
Изменение источника библиотеки определенно является обходным путем, которого следует избегать. Если вы измените выделенный путь, вы сломаете pandas для общесистемного python3.6... чего вы действительно хотите избежать. Пс. понижение версии pandas до 0.23.0 с помощью pandas_reader 0.6 у меня не сработало. - person w00dy; 06.09.2018

Решение без локального изменения каких-либо файлов и обхода контроля версий вашего менеджера пакетов (pip) состоит в том, чтобы определить is_list_like следующим образом:

import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like

прямо перед

import pandas_datareader as web

Кроме того, эта проблема будет исправлена ​​в выпуске pandas_datareader версии 0.7.0.

person Nils    schedule 21.06.2018
comment
Это должен быть принятый ответ, потому что для работы не нужно менять какие-либо файлы. - person pcko1; 25.06.2018
comment
согласен, 1 строчка кода решает проблему, пока не будет готов datareader 0.7 - person fandang; 30.06.2018

Это связано с тем, что is_list_like был перемещен с pandas.core.common на pandas.api.types в Pandas 0.23.0. Эта проблема была устранена здесь и станет частью Pandas Datareader 0.7. 0 релиз. На данный момент я бы рекомендовал использовать версию Datareader для разработчиков. Инструкции по установке можно найти в документации.

person Addison Lynch    schedule 18.05.2018

Если вы не работаете с pandas_datareader. вам нужно проверить, установлен ли ваш считыватель данных среды conda или нет, если он не установлен, вы можете импортировать его таким образом.

import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader as web
person Rajendra Prasad Taidala    schedule 08.08.2018

Отредактируйте файл fred.py внутри /your_installation_path/python2.7/site-packages/pandas_datareader и замените, как показано ниже:

from pandas.core.common import is_list_like #КОММЕНТАРИЙ ЭТО

из pandas.api.types import is_list_like #ADD

person Muhammad Sulman    schedule 03.06.2018

В Ubuntu 18.04, используя Python 3.6, я решил ошибку следующим образом.

cd /home/username/.local/lib/python3.6/site-packages/pandas_datareader

subl fred.py

и я изменил первую строку кода, которая была

from pandas.core.common import is_list_like

to

from pandas.api.types import is_list_like
person Rahul Soshte    schedule 21.06.2018