恐怕我不懂一些基本的东西我将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()

我有setupsingle_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>

10-06 03:09