【问题标题】:Why is iPython notebook interpreting commented out lines?为什么 iPython 笔记本解释注释掉的行?
【发布时间】:2013-04-28 02:43:13
【问题描述】:

这个问题不是关于一个特定的错误——错误的出现是因为我错误地使用了matplotlibtight_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 解释器的无知。

【问题讨论】:

  • 你试过重启笔记本了吗
  • 是的——这似乎可以解决问题。我只是不知道为什么import 语句不接受对模块的更改。
  • 过去,我注意到如果我安装了一个模块,它不会自动变得可用,需要重新启动。
  • Python 只会导入一次模块,如果需要在某处重新加载,可以使用:reload(module_name)
  • 是的,我相信python会看到模块已经被导入,并且什么也不做,不管模块是否被修改过。

标签: python ipython-notebook


【解决方案1】:

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

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

import mymodule

# ...later...
reload(mymodule)

【讨论】:

    【解决方案2】:

    试试

    %load_ext autoreload
    %autoreload 2
    

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

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 2013-10-19
      • 2015-11-18
      • 2018-10-12
      • 1970-01-01
      • 2015-12-23
      • 2021-01-28
      相关资源
      最近更新 更多