尝试使用 matplotlib 绘图时不断出现错误

Rya*_*eid 4 python matplotlib python-3.x

我正在使用一个利用 matplotlib 的绘图函数,突然间,它停止工作并返回以下错误。

from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
ImportError: cannot import name 'warnings' from 'matplotlib.dates'
Run Code Online (Sandbox Code Playgroud)

是否有已知的修复方法?

谢谢

FFF*_*FFF 5

让我猜猜...您正在使用 backtrader 并且在使用时遇到了这个问题。您遇到的错误是:

File "/xxx/backtrader/plot/locator.py", line 35, in <module>
from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
ImportError: cannot import name 'warnings' from 'matplotlib.dates'    
Run Code Online (Sandbox Code Playgroud)

错误的根本原因是在上述文件 (locator.py) 的第 35 行尝试从 matplotlib.dates 导入“警告”:

from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
                          MONTHS_PER_YEAR, DAYS_PER_WEEK,
                          SEC_PER_HOUR, SEC_PER_DAY,
                          num2date, rrulewrapper, YearLocator,
                          MicrosecondLocator, warnings)    
Run Code Online (Sandbox Code Playgroud)

但如果你查看文档或代码,你会发现 matplotlib.dates 中没有警告。深入 github 上的文件历史记录,可以发现一行:

import warnings   
Run Code Online (Sandbox Code Playgroud)

已于2019 年 9 月 7 日删除,这可能是您注意到问题的原因。在 Backtrader 中,有一个拉取请求正在等待此问题: https ://github.com/mementum/backtrader/pull/418

如果您分叉了代码,您可以自行修复代码,或者等待 PR 被合并

  • 大家好,为了后代,我也遇到了这个问题并恢复到 matplotlib 3.1.1 (通过执行 `pip uninstall matplotlib` 和 `pip install matplotlib=3.1.1` 并且它有效!至于 _tkinter 问题,那与这个特定的 matplotlib 问题是分开的 - 您需要安装 tkinter 软件包 - 请参阅 /sf/ask/3395332251/ -文件或直接 (2认同)