每次对脚本进行更改时,都需要在终端中重新启动python
每次更改python脚本时,我都必须重新加载python并重新导入模块。请告知我如何修改脚本并运行,而无需在终端中重新启动python每次对脚本进行更改时,都需要在终端中重新启动python,python,Python,每次更改python脚本时,我都必须重新加载python并重新导入模块。请告知我如何修改脚本并运行,而无需在终端中重新启动python 谢谢。如果只是某个模块正在更改,您可以调用您的脚本。您的意思是直接将脚本输入交互式python脚本,还是通过运行类似于python myscript.py的程序从终端执行.py文件?您可以用来重新导入模块。在使用交互模式调试代码时,我经常使用它 然而,从更高的层次来看,我会犹豫在程序的生产版本中使用它。除非您对子模块如何更改有非常严格的控制,否则以某种方式更改重
谢谢。如果只是某个模块正在更改,您可以调用您的脚本。您的意思是直接将脚本输入交互式python脚本,还是通过运行类似于
python myscript.py
的程序从终端执行.py文件?您可以用来重新导入模块。在使用交互模式调试代码时,我经常使用它
然而,从更高的层次来看,我会犹豫在程序的生产版本中使用它。除非您对子模块如何更改有非常严格的控制,否则以某种方式更改重新加载的模块并不会使程序中断。除非你的程序真的需要100%的运行时间,否则当出现某种版本更改时,停止并重新启动程序是有意义的。根据你描述工作流程的评论,我有一个建议:
首先,我在terminal second中运行python3.1,我执行“导入模块”,然后,我从模块中运行一个方法,比如“module.method(arg)”,每次我尝试调试代码时,我都必须执行整个序列,即使更改很小。这是非常低效的 不要启动交互式Python shell,而是使模块本身可执行。最简单的方法是在模块底部添加一个块,如下所示:
if __name__ == '__main__':
method(arg) # matches what you run manually in the Python shell
然后,您可以执行以下操作,而不是运行python3.1,然后导入模块,然后调用方法:
python3.1 modulename.py
而Python将运行中的任何代码,如果uuu name uuu=='\uuuu main uu'
块。但是,如果该模块由另一个Python模块导入,则不会运行该代码。可以找到关于这个常见Python习语的更多信息
这样做的好处是,当您更改代码时,通常只需按向上箭头并按enter键即可重新运行模块。没有混乱的重新加载需要。我发现一个旁路在线。魔法命令存在。它对我来说很有魅力。重新加载选项对我不起作用。从这个链接的第三点得到的 基本上,您所要做的就是:保存后,所做的更改会自动反映出来
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: Import MODULE
In [4]: my_class = Module.class()
my_class.printham()
Out[4]: ham
In [5]: #make changes to printham and save
In [6]: my_class.printham()
Out[6]: hamlet
这是正确的,但请注意,如果你按照链接,你会看到有几个警告。是的!至少python有一个重载。PHP只是因为一个“无法重新声明函数”之类的东西而崩溃了。首先,我在terminal second中运行python3.1,我执行“导入模块”,然后,我从模块中运行一个方法,比如“module.method(arg)”。每次,我尝试调试代码时,我都必须执行整个序列,即使更改很小。这是一个非常低效的更新:我看到威尔·麦库钦击败了我。您将要做的是将脚本写入文件,而不是在终端中执行。例如,您的文件名为“myscript.py”。在其中写入所有命令,然后将脚本放置在同一文件夹中并运行。这样,您就不必每次都键入命令。windows,您正在运行什么操作系统?对于Python 3,重新加载已移动到
imp
,因此您必须导入imp
,然后导入imp.reload(mod)