简而言之
每次在模块代码中进行一些更改时,如何强制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?
答案 0 :(得分:3)
(Spyder dev here)我认为目前您无法直接在控制台中重新加载模块(但我们正在考虑将来更改此模块)。
关于 UMD 的想法是,它会重新加载您的模块,但只有,如果您从导入它们的编辑器运行文件。如果您想直接在控制台中重新加载它们,它将无效。
假设您开发了一个模块,那么您可能在不同的脚本中使用它(很可能)您将在我们的编辑器中编写并将其发送到我们的控制台。 UMD 有点神奇,可以在发生这种情况时为您重新加载。
答案 1 :(得分:1)
也许对其他人有用。在Spyder 3.0.0中,可以通过
重新加载模块工具 - >更新模块名称列表。
它对我有用。