【发布时间】:2013-06-25 05:12:27
【问题描述】:
简而言之
每次我对模块代码进行一些更改时,如何强制 python 解释器加载我的模块的最新代码版本?
或者至少通过键入
重新加载上次修改的版本>>> from myModule import *
进入控制台,无需重新启动整个 python 控制台并在我进行一些更改时一次又一次地设置所有内容?这对于调试来说是非常不愉快的行为。
---------更长的故事-----------
我尝试删除 .pyc 文件,然后重新导入 - 但没有效果。它甚至不会再次创建 .pyc 文件 - 所以如果模块已经加载,我希望它完全忽略我的“导入”命令。
这也无济于事:
>>> 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 中这一事实的影响?
【问题讨论】:
-
好的,我刚刚发现 reload( mymodule ) 可以完成这项工作。但是,1)是否有可能让它以某种方式自动化? 2) 如果不是这个,UMD 有什么好处?
-
relaod 对我不起作用。我在编辑器中更改了一个文件,然后保存它。然后我在控制台中重新加载(ModuleName)并从模块运行更新的方法,我得到了旧方法。仅从编辑器 (F5) 运行模块实际上会更新模块。有什么建议吗?
-
@idoda 我也一样。你找到解决办法了吗?
标签: python-import rebuild spyder