【问题标题】:I keep getting an error when trying to plot with matplotlib尝试使用 matplotlib 绘图时不断出现错误
【发布时间】:2026-01-05 10:35:01
【问题描述】:

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

from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
ImportError: cannot import name 'warnings' from 'matplotlib.dates'

是否有已知的解决方法?

谢谢

【问题讨论】:

  • 如果您告诉我们错误“突然”发生而不是显示代码,您将很难找到帮助。

标签: python python-3.x matplotlib


【解决方案1】:

让我猜猜...您正在使用 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'    

错误的根本原因是在上述文件(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)    

但是如果你查看文档或代码,你会发现matplotlib.dates中没有任何警告。在github上挖掘这个文件历史,可以发现一行:

import warnings   

已经removed on 7 sept 2019,这可能是您注意到问题的原因。 在 Backtrader 中,有一个拉取请求正在等待这个问题: https://github.com/mementum/backtrader/pull/418

如果你分叉了代码,你可以自己将修复应用到代码中,或者等待 PR 被合并

【讨论】:

  • 没错。感谢您的信息
  • 知道合并这样的东西通常需要多长时间吗?谢谢
  • 嗯,不。这很复杂:backtrader 的唯一维护者只应用修复,并且在非常不规则的基础上。一些用户正在考虑分叉和制作一个新版本(backtrader2)你可以在这里找到关于这个的讨论:community.backtrader.com/topic/2553/backtrader-s-future你可以在这里找到你遇到的问题的讨论:community.backtrader.com/topic/2784/…
  • 似乎如果你想以某种方式快速解决这个问题,你必须自己做,在你的计算机上,在文件“backtrader/plot/locator.py”中 - 第 39 行:删除“,警告”。 - 第 30 行:在“import datetime”下添加一个带有“import warnings”的新行
  • 大家好,为了后代,我也遇到了这个问题并恢复到 matplotlib 3.1.1(通过执行pip uninstall matplotlibpip install matplotlib=3.1.1 并且它有效!至于 _tkinter 问题,那与这个特定的 matplotlib 问题不同 - 您需要安装 tkinter 包 - 请参阅 *.com/questions/48504746/…
【解决方案2】:

我遇到了同样的问题... 我正在使用 python-3.6.13、conda-4.9.2、backtrader-1.9.76.123.dist-info。

我使用的matplotlib版本(matplotlib-3.3.4)似乎是问题所在,即使导入警告(import warnings)也没有解决。

我的解决方案是:
pip 卸载 matplotlib
pip install matplotlib==3.2.2

希望能帮到你,谢谢!

【讨论】:

    最近更新 更多