【问题标题】:Matplotlib.pyplot: global name time is not defined errorMatplotlib.pyplot:全局名称时间未定义错误
【发布时间】:2017-10-27 19:26:25
【问题描述】:

我最近开始在我的 jupyter notebook 中遇到一个奇怪的 pyplot 问题。在尝试pyplot.pause() 时,我在实际的 matplotlib 包中出现名称错误。

在与.py 文件而不是.ipynb 执行的代码完全相同的代码中不会出现此名称错误。 .py.ipynb 之间的其他所有内容都执行相同的操作,并且它们都使用相同的虚拟环境和包。

错误:

---------------------------------------------------
NameError          Traceback (most recent call last)
<ipython-input-9-11e7508f518d> in <module>()
     32         plt.title('Epoch: {0}, loss: {1:.4}'.format(epoch, loss_history[epoch-1]))
     33         plt.show()
---> 34         plt.pause(0.001)
     35         #display.display(plt.gcf())
     36         #display.display(plt.show())
/home/user/.pyenv/versions/2.7.14/envs/P2714/lib/python2.7/site-packages/matplotlib/pyplot.pyc in pause(interval)
    292         canvas.start_event_loop(interval)
    293     else:
--> 294         time.sleep(interval)
    295 
    296 
NameError: global name 'time' is not defined

【问题讨论】:

    标签: python matplotlib ipython jupyter-notebook


    【解决方案1】:

    有一个关于这个问题的错误报告报告了here。问题是 pyplot.py 中缺少 import timestatement。

    解决这个问题的A pull request已经合并到master分支,应该包含在2.1.1版本中。

    我可以确认,通过使用 matplotlib 主分支中的 pyplot.py,我不会再出现这个问题了。

    【讨论】:

    • @Alnitak,它只在没有数字时使用 time.sleep,例如当程序关闭时,图形被破坏后。大概是关于在笔记本中运行的一些事情(后端的选择?)导致 _pylab_helpers.Gcf.get_active() 返回无。让我想知道 pyplot.pause 是否真的像你想象的那样工作;它可能只是调用 time.sleep。 github.com/matplotlib/matplotlib/blob/…
    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2013-06-07
    • 2014-03-07
    • 1970-01-01
    相关资源
    最近更新 更多