3

这个问题与特定错误无关——错误的出现是因为我错误地使用了matplotlib's tight_layout

我想知道为什么 iPython 会解释我已经注释掉的一行代码——或者更确切地说,在什么情况下会发生这种情况(即,我需要重新启动内核,或其他什么)。

尽管我重新执行了相关导入,但该错误似乎仍然存在。

代码:

import forecasting_report.analyze as fcst_rprt
analysis = fcst_rprt.ForecastingReport()
analysis.analyze()
results = analysis.user_dict

错误说:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-6-a62e6e8717be> in <module>()
      1 analysis = fcst_rprt.ForecastingReport()
----> 2 analysis.analyze()
      3 results = analysis.user_dict

/Users/[...]/ForecastingReport/forecasting_report/analyze.py in analyze(self)  
     44         self.breakdown = help.breakdown(self.user_dict)
---> 45         #plots.plot_breakdown(self.breakdown, self.path)
     46 
     47     def write_results(self):

<Error Stack continues>

笔记:

一个完美的答案是:“这不是它的工作方式”。可以肯定的是,我没有尝试在命令行重现这个错误,所以这可能是我对 Python 解释器的无知。

4

2 回答 2

1

Python 只会初始化一个导入的模块一次,进一步调用import将无效,即使模块在被读取后已被修改。

要重新加载模块,请在已导入的模块对象上使用内置函数reload ,例如:

import mymodule

# ...later...
reload(mymodule)
于 2013-05-03T20:44:05.593 回答
1

尝试

%load_ext autoreload
%autoreload 2

它应该适用于 ipython 终端,我不确定它是否适用于 ipython 笔记本。您可以通过autoreload?这篇文章查看帮助:Autoreload of modules in IPython

于 2013-05-03T20:48:59.683 回答