import pandas_datareader给出了ImportError:无法导入名称' is_list_like'

时间:2018-05-17 15:10:47

标签: python pandas pandas-datareader

我在虚拟环境中工作。我能够在没有任何错误的情况下导入和使用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'

6 个答案:

答案 0 :(得分:94)

无需在本地更改任何文件并绕过的包管理器(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版中得到解决。

答案 1 :(得分:61)

我遇到了这个错误,我找到了解决它的方法。我的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'

enter image description here

因为is_list_like被移动到pandas.api.types,我更改了图片中突出显示的fred.py文件。我将from pandas.core.common import is_list_like替换为from pandas.api.types import is_list_like,并且有效。

enter image description here

答案 2 :(得分:11)

这是因为Pandas 0.23.0中is_list_like已从pandas.core.common移至pandas.api.types。此问题已修复here,并将成为Pandas Datareader 0.7.0版本的一部分。目前,我建议使用Datareader的开发版。有关安装的说明,请参阅documentation

答案 3 :(得分:4)

如果您不使用pandas_datareader。您需要检查是否已安装conda环境数据读取器(如果未安装),则可以通过这种方式导入。

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

答案 4 :(得分:2)

编辑/your_installation_path/python2.7/site-packages/pandas_datareader中的fred.py文件并替换如下:

来自pandas.core.common import is_list_like #COMMENT IT

来自pandas.api.types导入is_list_like #ADD

答案 5 :(得分:1)

在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

from pandas.api.types import is_list_like