web-dev-qa-db-ja.com

「ImportError:名前 'StringIO'をインポートできません」を修正する方法

pythonのバージョンは3.6.6で、pandas_datareaderのバージョンは0.7.0です。

pandas_datareaderをインポートすると、以下のようなエラーが発生します。

C:\PycharmProjects\Demo\venv\Scripts\python.exe C:/PycharmProjects/Demo/stock.py
Traceback (most recent call last):
  File "C:/PycharmProjects/Demo/stock.py", line 3, in <module>
    import pandas_datareader as wb
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\data.py", line 7, in <module>
    from pandas_datareader.av.forex import AVForexReader
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\av\__init__.py", line 3, in <module>
    from pandas_datareader.base import _BaseReader
  File "C:\PycharmProjects\Demo\venv\lib\site-packages\pandas_datareader\base.py", line 11, in <module>
    from pandas.compat import StringIO, bytes_to_str
ImportError: cannot import name 'StringIO'

誰かが私を助けてくれますか?

8
김장환

問題はpandas 0.25.0によってpandas.compatが削除されたので、0.24.2に戻ります。

pip install "pandas<0.25.0"

または

pipenv install "pandas<0.25.0"
5
Ric Pruss

Python3.6とPython3.7で同じ問題が発生しました

ダウングレードされ、Python2.7で正常に動作します。また、Python3.5が動作するという上記のコメントを参照してください。

0
Mirror Mirage