python - shell 中已知的实例在脚本中使用时会给出 NameError?

标签 python ipython

恐怕我不明白一些基本的东西。我将 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' is not defined (caused by fnext = ...)。然而,直接在 IPython shell 中输入,所有实例都是已知的,所有命令都可以正常工作。

这是 IPython 问题吗?每次我想运行我的脚本时,如何避免实例化我的 vpp 对象?

预先感谢您的回答。 滚

最佳答案

您是否使用 IPython 运行脚本 %run命令?

在那种情况下使用:

In [#]: %run -i filename.py

-i在 IPython 的命名空间(而不是空命名空间)中运行文件。

要获取文档,请输入 %run?<ENTER>在 IPython 中。

关于python - shell 中已知的实例在脚本中使用时会给出 NameError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992948/

相关文章:

python - 属性错误 : 'NoneType' object has no attribute 'magic'

python - 在 Jupyter Notebook 中使用 Pandas 表的 IPython.display 时如何在单元格周围包含边框

python - PyQT5 - 警告使用 'exit' 、 'quit' 或 Ctrl-D 退出 jupyter notebook 中的应用程序

Python 3.4 电子邮件

python - 将 Twitter Bootstrap 轻松集成到任何 Pyramid 表单框架

python - 如何正确记录 python 枚举元素?

python - ipython:在应用程序中启动内核和内核管理器

python - 在 Python 中从进程 ID 获取父进程和子进程 ID

python - 在 Python 中进行 Introsort,有人可以指出我的错误吗?

ipython - 向 ipython 交互式小部件添加移动水平线