恐怕我不明白一些基本的东西。我将 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' is not defined (caused by fnext = ...
)。然而,直接在 IPython shell 中输入,所有实例都是已知的,所有命令都可以正常工作。
这是 IPython 问题吗?每次我想运行我的脚本时,如何避免实例化我的 vpp 对象?
预先感谢您的回答。滚
您是否使用 IPython 运行脚本 %run
命令?
在那种情况下使用:
In [#]: %run -i filename.py
-i
在 IPython 的命名空间(而不是空命名空间)中运行文件。
要获取文档,请输入 %run?<ENTER>
在 IPython 中。
我是一名优秀的程序员,十分优秀!