更新模块导入到python解释器

时间:2013-06-27 15:46:04

标签: python-import rebuild spyder

简而言之

每次在模块代码中进行一些更改时,如何强制python解释器加载我模块的最新代码版本?

或者至少通过输入

重新加载上次修改的版本
>>> from myModule import *

进入控制台,没有必要重新启动整个python控制台并随时重新设置所有内容我做出一些更改?这对于调试来说是非常不愉快的行为。

--------- LONGER STORY -----------

尝试删除.pyc文件,然后再次导入 - 但它没有效果。它甚至不会再创建.pyc文件 - 所以我希望它完全忽略我的" import"命令是否已加载模块。

这也没有帮助:

>>> mymodule.myfunc()    # the old version
>>> del myModule         # unload mymodle from python conole / interpeter
...                  # now I removed .pyc
...                  # now I make some modifications in mymodule.myfunc() code   
>>> mymodule.myfunc()    # module is unknonwn, ... OK
>>> import myModule      # try to load modified version
>>> mymodule.myfunc()    # stil the old version :(((((, How it can remember?

我也试过Spyder这个功能称为"用户模块删除器(UMD)" http://pythonhosted.org/spyder/console.html#reloading-modules-the-user-module-deleter-umd 我认为应该做到这一点,但似乎它没有(是的,我检查它已打开)。

也许我错过了什么 - 有人可以解释一下我该怎么用?

这是否受到以下事实的影响:导入的模块不在"工作目录"但在PYTHONPATH?

2 个答案:

答案 0 :(得分:3)

(Spyder dev here)我认为目前您无法直接在控制台中重新加载模块(但我们正在考虑将来更改此模块)。

关于 UMD 的想法是,它会重新加载您的模块,但只有,如果您从导入它们的编辑器运行文件。如果您想直接在控制台中重新加载它们,它将无效。

假设您开发了一个模块,那么您可能在不同的脚本中使用它(很可能)您将在我们的编辑器中编写并将其发送到我们的控制台。 UMD 有点神奇,可以在发生这种情况时为您重新加载。

答案 1 :(得分:1)

也许对其他人有用。在Spyder 3.0.0中,可以通过

重新加载模块

工具 - >更新模块名称列表。

它对我有用。