web-dev-qa-db-fra.com

import pandas_datareader donne ImportError: impossible d'importer le nom 'is_list_like'

Je travaille dans un environnement virtuel. Je peux importer et travailler dans pandas sans erreur, mais lorsque j'essaie de 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

c'est donner l'erreur suivante -

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'
55
Raj

Je rencontre cette erreur et j'ai trouvé une méthode pour la résoudre. Mes versions de pandas et pandas_datareader sont 0.23 et 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'

enter image description here

Parce que le is_list_like est déplacé vers pandas.api.types, je change le fichier fred.py qui est mis en surbrillance dans l'image. Je remplace from pandas.core.common import is_list_like par from pandas.api.types import is_list_like, et cela fonctionne.

enter image description here

62
huanggh

Une solution sans changer les fichiers localement et contourner le contrôle de version de votre gestionnaire de paquets (pip) consiste à définir is_list_like comme ceci:

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

juste avant

import pandas_datareader as web

De plus, ce problème sera résolu dans la version 0.7.0 de pandas_datareader.

97
Nils

Cela est dû au fait que is_list_like a été déplacé de pandas.core.common vers pandas.api.types dans Pandas 0.23.0. Ce problème a été réparé ici et fera partie de la version Pandas Datareader 0.7.0. Pour le moment, je recommanderais l’utilisation de la version dev de Datareader. Les instructions pour l’installation se trouvent dans documentation .

11
Addison Lynch

Si vous ne travaillez pas avec pandas_datareader. vous devez vérifier si votre lecteur de données conda environment est installé ou non, sinon installez-le, vous pouvez importer de cette manière.

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

Editez le fichier fred.py dans /your_installation_path/python2.7/site-packages/pandas_datareader et remplacez-le comme suit:

depuis pandas.core.common import is_list_like #COMMENT IT

depuis pandas.api.types import is_list_like #ADD

2
Muhammad Sulman

Dans Ubuntu 18.04, en utilisant Python 3.6, j'ai résolu l'erreur de la manière suivante.

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

subl fred.py

et j'ai changé la première ligne de code qui était

from pandas.core.common import is_list_like

à

from pandas.api.types import is_list_like
1
Rahul Soshte