恐怕我不懂一些基本的东西我将python与IPython交互使用,并或多或少地运行以下脚本(VPP是我用类VPP和类Forecast编写的模块,它们都是从对象扩展的)。
import os
import numpy as np
from VPPP import VPP, Forecast
setup = False
single_run = True
if setup:
vpp = VPP(foo=foo, bar=bar, ...)
forecast = Forecast('my_filename')
mapping = {'Forecast': 'PConInput.ys[xxx]', 'Price': 'tariffInput.ys[xxx]'}
if single_run:
fnext = forecast.predict(startday=146, nb_days=2)
vpp.adapt_forecasts(fnext, mapping)
vpp.optimize()
我有
setup
和single_run
标记,因为vpp的实例化大约需要2分钟,我想在以后的单次运行中使用相同的vpp,使用不同的参数。当我使用两个标志
True
运行脚本时,一切正常。但是,当我使用setup = False
再次运行时,会收到一条错误消息:nameerror:name'forecast'未定义(由fnext = ...
引起)。但是,直接在ipython shell中输入,所有实例都是已知的,所有命令都可以正常工作。这是伊普顿的问题吗?每次我想运行脚本时,如何避免vpp对象的实例化?
谢谢你事先的回答。
罗尔
最佳答案
是否使用IPython%run
命令运行脚本?
在这种情况下,使用:
In [#]: %run -i filename.py
-i
在ipython的命名空间中运行文件(而不是空的)。对于文档,请在IPython中键入
%run?<ENTER>
。