每次对脚本进行更改时,都需要在终端中重新启动python

每次对脚本进行更改时,都需要在终端中重新启动python,python,Python,每次更改python脚本时,我都必须重新加载python并重新导入模块。请告知我如何修改脚本并运行,而无需在终端中重新启动python 谢谢。如果只是某个模块正在更改,您可以调用您的脚本。您的意思是直接将脚本输入交互式python脚本,还是通过运行类似于python myscript.py的程序从终端执行.py文件?您可以用来重新导入模块。在使用交互模式调试代码时,我经常使用它 然而,从更高的层次来看,我会犹豫在程序的生产版本中使用它。除非您对子模块如何更改有非常严格的控制,否则以某种方式更改重

每次更改python脚本时,我都必须重新加载python并重新导入模块。请告知我如何修改脚本并运行,而无需在终端中重新启动python


谢谢。

如果只是某个模块正在更改,您可以调用您的脚本。

您的意思是直接将脚本输入交互式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)