pandas_datareader,导入错误:无法导入名称“urlencode”

rou*_*dan 4 python pandas-datareader

我在 pandas_datareader 上工作正常,然后今天我从下面的链接中安装了两个雅虎财经,试图解决另一个问题。

未获取数据 Web.DataReader Panda

pip install yfinance
pip install fix_yahoo_finance
Run Code Online (Sandbox Code Playgroud)

上述安装后,pandas_datareader 不能再使用了。我用谷歌搜索了一下,确实添加了以下导入,但 pandas_datareader 仍然无法正常工作。

from urllib.parse import urlencode
Run Code Online (Sandbox Code Playgroud)

这是错误:非常感谢您的帮助。

from pandas_datareader import data

  File "C:\Users\yongn\Anaconda3\lib\site-packages\pandas_datareader\__init__.py", line 2, in <module>
    from .data import (
  File "C:\Users\yongn\Anaconda3\lib\site-packages\pandas_datareader\data.py", line 11, in <module>
    from pandas_datareader.av.forex import AVForexReader
  File "C:\Users\yongn\Anaconda3\lib\site-packages\pandas_datareader\av\__init__.py", line 6, in <module>
    from pandas_datareader.base import _BaseReader
  File "C:\Users\yongn\Anaconda3\lib\site-packages\pandas_datareader\base.py", line 7, in <module>
    from pandas.io.common import urlencode
ImportError: cannot import name 'urlencode'
'''
Run Code Online (Sandbox Code Playgroud)

rou*_*dan 11

好的,我通过升级 pandas datareader 解决了这个问题

pip install pandas-datareader --upgrade
``

Thanks
Run Code Online (Sandbox Code Playgroud)


Fre*_*ger 5

原因是熊猫从他们的库中删除了 urlencode。因此,对于较新版本的熊猫,这将永远不起作用。安装其他库或升级不会解决问题。

https://github.com/pydata/pandas-datareader/pull/793/commits/558862104028dd7dbf5e845b3b6c5fcfc0d568e5

解决方法是使用 Python3 的 urlencode 版本。幸运的是,Python3 的替代品似乎有所下降:

替换这个:

from pandas.io.common import urlencode
Run Code Online (Sandbox Code Playgroud)

和:

from urllib.parse import urlencode
Run Code Online (Sandbox Code Playgroud)

并像往常一样使用 urlencode


use*_*486 5

我遇到了完全相同的错误。我正在使用 python anaconda 2020_07 版本。

解决方案是使用 anaconda 包中最新的 pandas-datareader v0.9。如果您使用 conda-forge 中使用旧版本 v0.81 的 pandas-datareader 包,您将遇到错误。这是截至 2020 年 12 月 20 日的状态。

https://anaconda.org/anaconda/pandas-datareader

我运行下面的命令来安装最新的pandas-datareader软件包。

conda install -c anaconda pandas-datareader

错误消息消失,问题已得到解决。

编辑:如果 conda 稍后降级pandas-datareader回 conda-forge 旧版本,则有一个修复程序。见/sf/answers/4577052511/