如何恢复/重新加载Python(IDLE)[2.7]shell停止的位置?
在Python2.7中,我正在调试一个导入的模块,在空闲shell中使用一个扩展的站立环境。我希望自动重新创建该环境(而不是手动逐行键入),以便在每次我检查模块时简化调试(触发shell中的自动重新启动并丢失当前状态)。有没有办法保存shell状态,或者创建一个脚本,以便在已经运行了大量命令的情况下[原样]重新打开shell 这与保存文件或脚本不同——我希望将shell恢复到以前的状态。例如,如果我执行了导入操作系统,numpy,并分配了几个变量如何恢复/重新加载Python(IDLE)[2.7]shell停止的位置?,python,python-2.7,shell,python-idle,Python,Python 2.7,Shell,Python Idle,在Python2.7中,我正在调试一个导入的模块,在空闲shell中使用一个扩展的站立环境。我希望自动重新创建该环境(而不是手动逐行键入),以便在每次我检查模块时简化调试(触发shell中的自动重新启动并丢失当前状态)。有没有办法保存shell状态,或者创建一个脚本,以便在已经运行了大量命令的情况下[原样]重新打开shell 这与保存文件或脚本不同——我希望将shell恢复到以前的状态。例如,如果我执行了导入操作系统,numpy,并分配了几个变量a='foo',bar=229,我想将shell恢
a='foo'
,bar=229
,我想将shell恢复到已经导入操作系统,numpy,并分配a
和bar
的相同状态
处理注释:打开文件以空闲方式打开文件;不是我想要的。保存脚本可以,但不会恢复shell窗口的状态。创建脚本(例如test_this.py),并添加您键入的所有行
import os
import numpy
a = 'blah'
bar = 229
完成后,保存并按F5(运行),它将出现在空闲解释器中。如果您有任何错误,它们也会出现,您可以学习调试
(添加为回复而不是注释,因为注释不允许多行脚本)创建脚本(例如test_this.py),并添加您键入的所有行
import os
import numpy
a = 'blah'
bar = 229
完成后,保存并按F5(运行),它将出现在空闲解释器中。如果您有任何错误,它们也会出现,您可以学习调试
(添加为回复,而不是注释,因为注释不允许多行脚本)前面提到的显而易见且几乎唯一的解决方案是脚本,假设您正在调试
mymod.py
,那么您有以下选项
mymod.py
#my stuff
...
if __name__ == "__main__":
import os, numpy
a = 'blah'
bar = 229
print "debugging environment ready"
import mymod
import os, numpy
a = 'blah'
bar = 229
print "debugging environment in outside script ready"
用IDLE打开它并运行它(F5),或者用python-i mymod.py以交互模式打开它mytest.py
#my stuff
...
if __name__ == "__main__":
import os, numpy
a = 'blah'
bar = 229
print "debugging environment ready"
import mymod
import os, numpy
a = 'blah'
bar = 229
print "debugging environment in outside script ready"
并在空闲或交互模式下运行此命令================= RESTART: C:\Users\David\Documents\Python Scripts\mymod.py =================
debugging environment ready
>>> a
'blah'
>>> bar
229
>>> os
<module 'os' from 'C:\Python27\lib\os.pyc'>
>>>
假设您在mymod.py中修改了一些内容,例如添加此行new\u stuff=42
>>> mymod.new_stuff
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
mymod.new_stuff
AttributeError: 'module' object has no attribute 'new_stuff'
>>> import sys
>>> del sys.modules["mymod"]
>>> import mymod
>>> mymod.new_stuff
42
>>> a
'blah'
你会发现这个类以前的实例不再被重新处理
>>> b = mymod.A()
>>> del sys.modules["mymod"]
>>> import mymod
>>> c = mymod.A()
>>> b.a
42
>>> c.a
42
>>> isinstance(b,mymod.A)
False
>>> isinstance(c,mymod.A)
True
>>> b
<mymod.A instance at 0x02CA62D8>
>>> c
<mymod.A instance at 0x02CE5378>
>>>
>b=mymod.A()
>>>删除系统模块[“mymod”]
>>>导入mymod
>>>c=mymod.A()
>>>文学学士
42
>>>c.a
42
>>>isinstance(b,mymod.A)
假的
>>>isinstance(c,mymod.A)
真的
>>>b
>>>c
>>>
前面提到的显而易见且几乎唯一的解决方案是一个脚本,假设您正在调试
mymod.py
,那么您有以下选项
mymod.py
#my stuff
...
if __name__ == "__main__":
import os, numpy
a = 'blah'
bar = 229
print "debugging environment ready"
import mymod
import os, numpy
a = 'blah'
bar = 229
print "debugging environment in outside script ready"
用IDLE打开它并运行它(F5),或者用python-i mymod.py以交互模式打开它mytest.py
#my stuff
...
if __name__ == "__main__":
import os, numpy
a = 'blah'
bar = 229
print "debugging environment ready"
import mymod
import os, numpy
a = 'blah'
bar = 229
print "debugging environment in outside script ready"
并在空闲或交互模式下运行此命令================= RESTART: C:\Users\David\Documents\Python Scripts\mymod.py =================
debugging environment ready
>>> a
'blah'
>>> bar
229
>>> os
<module 'os' from 'C:\Python27\lib\os.pyc'>
>>>
假设您在mymod.py中修改了一些内容,例如添加此行new\u stuff=42
>>> mymod.new_stuff
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
mymod.new_stuff
AttributeError: 'module' object has no attribute 'new_stuff'
>>> import sys
>>> del sys.modules["mymod"]
>>> import mymod
>>> mymod.new_stuff
42
>>> a
'blah'
你会发现这个类以前的实例不再被重新处理
>>> b = mymod.A()
>>> del sys.modules["mymod"]
>>> import mymod
>>> c = mymod.A()
>>> b.a
42
>>> c.a
42
>>> isinstance(b,mymod.A)
False
>>> isinstance(c,mymod.A)
True
>>> b
<mymod.A instance at 0x02CA62D8>
>>> c
<mymod.A instance at 0x02CE5378>
>>>
>b=mymod.A()
>>>删除系统模块[“mymod”]
>>>导入mymod
>>>c=mymod.A()
>>>文学学士
42
>>>c.a
42
>>>isinstance(b,mymod.A)
假的
>>>isinstance(c,mymod.A)
真的
>>>b
>>>c
>>>
您可以将代码保存在文件中并在IDLEI中打开。如果重复相同的命令,则可以将它们全部添加到脚本中并进行编辑以删除错误。将代码保存在文件中只需在新的空闲窗口中打开即可。我希望代码在空闲shell中执行。我熟悉编辑脚本-这不是我想做的。我们的愿望是将外壳恢复到它原来的状态,并使其保持该状态。我编辑了原始问题以反映这些要点。使用标准解释器,您只需在它完成脚本运行后传递
-I
标志即可进入交互模式。我不知道IDLE,但IDLE中可能有类似的东西。保存正在运行的Python进程状态的唯一方法是保存创建当前状态的Python语句。可以保存Shell会话并将其编辑为输入的语句。然后可以从编辑器运行结果以重新创建程序状态。从交互式实验创建程序是一件正常的事情。您可以将代码保存在文件中并在IDLE中打开。如果重复相同的命令,您可以将它们全部添加到脚本中并进行编辑以删除错误。将代码保存在文件中只需在新的空闲窗口中打开即可。我希望代码在空闲shell中执行。我熟悉编辑脚本-这不是我想做的。我们的愿望是将外壳恢复到它原来的状态,并使其保持该状态。我编辑了原始问题以反映这些要点。使用标准解释器,您只需在它完成脚本运行后传递-I
标志即可进入交互模式。我不知道IDLE,但IDLE中可能有类似的东西。保存正在运行的Python进程状态的唯一方法是保存创建当前状态的Python语句。可以保存Shell会话并将其编辑为输入的语句。然后可以从编辑器运行结果以重新创建程序状态。从交互式实验中创建程序是一件正常的事情,但这并不能回答问题。我正在调试一个导入