5

简而言之

每次我对模块代码进行一些更改时,如何强制 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 中这一事实的影响?

4

2 回答 2

4

(此处为 Spyder 开发人员)我认为目前您无法直接在控制台中重新加载模块(但我们正在考虑将来更改此设置)。

关于UMD的想法是它会重新加载您的模块,但前提您从导入它们的编辑器运行文件。如果您想直接在控制台中重新加载它们,它不起作用。

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

于 2013-06-27T17:40:50.553 回答
1

也许对其他人有用。在 Spyder 3.0.0 中,可以通过以下方式重新加载模块,

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

它对我有用。

于 2017-08-29T06:14:44.060 回答