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'
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'
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.
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.
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 .
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
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