cei*_*cat 6 python python-module ipython jupyter jupyter-notebook
我mytest.py在工作目录中有一个文件,内容如下:
class MyTest(object):
def __init__(self):
print(1)
pass
Run Code Online (Sandbox Code Playgroud)
在jupyter我有这些细胞。
单元格1:
%reload_ext autoreload
%autoreload 2
import mytest
Run Code Online (Sandbox Code Playgroud)
单元格2:
x = mytest.MyTest()
Run Code Online (Sandbox Code Playgroud)
如果我从一个新的内核开始,那么它将按预期工作,并且给了我1。现在,如果我进入mytest.py将打印输出更改为2并重新运行Cell 2,我将得到:
1
[autoreload of mytest failed: Traceback (most recent call last):
File "/Users/myusername/anaconda/lib/python3.5/site-packages/IPython/extensions/autoreload.py", line 247, in check
superreload(m, reload, self.old_objects)
NameError: name 'reload' is not defined
]
[autoreload of mytest failed: Traceback (most recent call last):
File "/Users/myusername/anaconda/lib/python3.5/site-packages/IPython/extensions/autoreload.py", line 247, in check
superreload(m, reload, self.old_objects)
NameError: name 'reload' is not defined
]
Run Code Online (Sandbox Code Playgroud)
如果我现在再次运行Cell 2,我会得到1没有任何错误的信息,但是它仍然没有使用新代码。
我不知道如何在不重新启动内核的情况下正确地重新加载模块,这是我做不到的,因为我在真实程序中有一些非常耗时的代码。
我已经IPython在终端中尝试过了。尽管在修改代码后实例化该类也会给我带来错误(请注意,这是另一个错误:),AttributeError: 'NoneType' object has no attribute '__dict__'但是如果我再次运行它,它将使用更新的代码。因此在我看来,这是特定于的问题jupyter。
我应该怎么做才能解决这个问题?
编辑(添加版本信息):Anaconda 2.5.0 Python 3.5.0 IPython 4.1.2 jupyter 4.1.0 Mac OS X 10.11.2
我正在使用最新版本的 Jupyter(笔记本 v7.0.4、ipython v8.15.0),我可以说现在autoreload工作得很好(无法重现问题中提到的错误)。事实上,在更改 的内容后mytest.py,如果我重新运行单元 2,则不会出现任何错误,并且可以看到更新后的输出。
| 归档时间: |
|
| 查看次数: |
4652 次 |
| 最近记录: |