gpt4 book ai didi

debugging - 从 Python 模块运行代码,修改模块,然后在不退出解释器的情况下再次运行

转载 作者:太空狗 更新时间:2023-10-30 00:51:13 26 4
gpt4 key购买 nike

我希望能够打开 Python shell,执行模块中定义的一些代码,然后修改模块,然后在不关闭/重新打开的情况下在同一个 shell 中重新运行它。

我已经尝试在修改脚本后重新导入函数/对象,但这不起作用:

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_module import buggy_function, test_input
>>> buggy_function(test_input)
wrong_value # Returns incorrect result

# Go to the editor, make some changes to the code and save them

# Thought reimporting might get the new version
>>> from my_module import buggy_function, test_input

>>> buggy_function(test_input)
wrong_value # Returns the same incorrect result

很明显,重新导入并没有让我获得该功能的“新版本”。

在这种情况下,关闭解释器并重新打开它没什么大不了的。但是,如果我测试的代码足够复杂,有时我必须做大量的导入对象和定义虚拟变量来创建一个可以充分测试代码的上下文。每次我进行更改时都必须这样做确实很烦人。

有人知道如何在 Python interpeter 中“刷新”模块代码吗?

最佳答案

使用imp.reload():

In [1]: import imp

In [2]: print imp.reload.__doc__
reload(module) -> module

Reload the module. The module must have been successfully imported before.

关于debugging - 从 Python 模块运行代码,修改模块,然后在不退出解释器的情况下再次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com