【问题标题】:Spyder - UMD has deleted: moduleSpyder - UMD 已删除:模块
【发布时间】:2012-12-02 07:32:48
【问题描述】:

我已经用 python 玩了大约一个月了,有些事情让我很困扰。 我使用简洁的 Spyder IDE 附带的 python(x,y) 工具包。 我的问题是关于 Spyder 的 UMD(用户模块删除器)。

我在互联网上找到了this 图形模块,它可以帮助人们在 python 脚本中做一些简单的图形工作(据我所知)。

这不是我卡住了,而是当我执行以下代码时:

import pylab as p
import graphics as g

window = g.GraphWin("tryout", 600, 600)
window.close()
print p.sqrt(4)

输出是:

>>>runfile(r'C:\some\folders\tryout.py', wdir=r'C:\some\folders')
>>>UMD has deleted: graphics
>>>2.0

第 1 行显然没问题。第 3 行也是如此,但我没有得到第 2 行。 此外,被激怒的窗口在屏幕中闪烁,它应该如此。 第 2 行似乎没有造成任何伤害,我可以完美地重新运行该文件多次,但我想知道它是从哪里来的。

AFAIK UMD 强制解释器在每次运行脚本时重新加载模块。 显示的消息是否意味着“它”已删除对模块的引用,因为它不再使用,还是其他原因?或者这是否意味着有问题,我以后应该添加更多代码会“伤害”我的代码吗?

注意:第一个问题,所以请评论其中的废话,以帮助我提高提问技巧。

编辑:我尝试在测试线print p.sqrt(4) 周围移动,发现我把它放在哪里并不重要。如果它是导入模块后的第一行,它仍然会在显示 sqrt(4) 之前引发消息

【问题讨论】:

    标签: python graphics spyder pythonxy


    【解决方案1】:

    简答:

    也许 deleted 不是您提到的消息中最好的词。它应该被重新加载,这正是 UMD 真正在做的事情,因为它不那么令人困惑。我将在我们的问题跟踪器中为此填写一个问题。

    长答案:

    UMD 不仅会重新加载您的脚本,还会重新加载它所依赖的所有本地模块。 本地我的意思是你的 Python 安装之外的模块并且你有写权限。

    这个想法是在你的脚本旁边,也许你已经开发了一个辅助函数库来配合它。因此,您很可能也想重新加载该库,以便在运行时反映对它的任何更改。

    我知道这不是你的情况,所以如果你想删除这条消息,你可以去:

    工具 > 首选项 > 控制台 > 高级设置 > 用户模块删除器

    并停用该选项

    显示重新加载的模块列表

    【讨论】:

    • 感谢您的澄清... =)
    • 有用,例如在使用 Mayavi 时它会打印一个很长的列表,因为这个“显示重新加载的模块列表”更多的是用于调试,不应该默认禁用它吗?
    • 我觉得不是调试用的;它更多的是通知用户在下次执行之前重新加载了哪些模块。在您的情况下,由于我猜您已在本地安装 Mayavi,因此您可以停用消息,将其添加到排除模块列表中。
    • 这导致为 ROS 开发软件时出现问题。我相信 UMD 会影响到 ROS 环境变量的路径,因为我可以运行一次代码,但不能运行第二次,因为找不到感兴趣的模块。停用的 UMD 停止了这种恼人的事件。
    • 当答案以这种方式具有权威性时,这真是太棒了。几年后看同样的指令,它被称为 UMR,用于重新加载器,并且更改如此彻底,这也很整洁。对于较新版本的 spyder,菜单顺序为 Tools > Preferences > Python Interpreter > Advanced Settings > User Module Reloader (UMR)
    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2020-06-09
    • 2011-02-12
    • 1970-01-01
    • 2013-12-27
    • 2022-07-22
    相关资源
    最近更新 更多