Machine learning 在iPython控制台中的脚本运行之间保存参数

Machine learning 在iPython控制台中的脚本运行之间保存参数,machine-learning,scikit-learn,ipython,anaconda,spyder,Machine Learning,Scikit Learn,Ipython,Anaconda,Spyder,我想找到与Spyder控制台命令等效的iPython控制台 当我使用Spyder应用程序时,所有变量都会在脚本运行之间保存。 我这样说不仅意味着我可以在脚本完成运行后检查这些值,而且这些值将保留在下一次脚本运行中 Spyder控制台命令(在iPython控制台中不起作用): runfile('some_file.py',wdir='/some/project/folder') iPython控制台中有一个类似的命令: %run-i“some_script.py” 问题在于,当新脚本开始执行时,此

我想找到与Spyder控制台命令等效的iPython控制台

当我使用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")

这将保留会话中的所有变量,因此您可以注释掉不需要更改的变量

%run
文档明确说明脚本是在干净的环境中运行的(没有任何交互变量)。交互式命名空间在运行后更新。但是有一个
-i
参数来运行IPython命名空间中的文件。我没有用过那个选项。使用
%run???
查看详细信息。能否给出一个脚本的小示例,该脚本可以根据需要在
Spyder
中运行,但不能在
ipython
中运行?