我想找到iPython控制台中与Spyder控制台命令等效的功能。
当我使用Spyder应用程序时,我的所有变量在脚本运行之间都会被保存。这不仅意味着我可以在脚本运行结束后检查这些值,还意味着这些值会在下一次脚本运行时被保留。
Spyder控制台命令(在iPython控制台中不起作用):runfile('some_file.py', wdir='/some/project/folder')
iPython控制台中有类似的命令:%run -i "some_script.py"
问题是这个命令会在新脚本开始执行时删除旧的值。
为什么这很重要?
假设我的脚本除了其他事情之外,还构建了一个模型,这个模型的构建时间比我愿意等待的时间要长(每次都这样)。在Spyder中,我可以第一次运行它,然后注释掉这行代码,下次运行时只运行剩余的代码,并从工作内存中提取模型。
(是的,我知道我可以将模型保存为pickle格式等,但这完全不是重点)
编辑:
这有点尴尬,但出于某种原因,我现在对-i
标志没有任何问题了。所以我能够用它获得所需的功能。可能是因为更新了Anaconda的版本。
回答:
你可以使用dill(Python pickle的扩展)来保存整个会话。因此,每次脚本结束时,你都会保存当前会话。
import dill
dill.dump_session("temp.pkl")
每次脚本开始时,你都会加载之前的会话。
import dill
dill.load_session("temp.pkl")
这样可以保留会话中的所有变量,你可以注释掉不需要更改的变量。