gpt4 book ai didi

jupyter-notebook - 重新加载在 jupyter notebook 中不起作用,但在 Ipython 中有效

转载 作者:行者123 更新时间:2023-12-04 14:09:49 25 4
gpt4 key购买 nike

我经常使用 Anaconda,包括 jupyter notebook 和 spyder。这是我的 python 版本: python 3.7.6 。在我修改了一些自己写的模块后,reload在spyder的Ipython console中一直有效,但在jupyter notebook中无效。这是我的重新加载代码:

import imp
imp.reload(my_module)

这是 jupyter notebook 的 react (看起来重新加载有效,但更改不会更新)

enter image description here

我还尝试了以下魔术命令:

%load_ext autoreload
%autoreload 2

同样,这些相同的代码在 spyder 的 Ipython 控制台中工作,但在 jupyter notebook 中大部分时间不起作用(但有时工作,我无法弄清楚命令何时工作,但我已经成功了两次)。这是jupyter notebook报错:

    ---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-27-209f44cf5dc0> in <module>
----> 1 get_ipython().run_line_magic('load_ext', 'autoreload ')
2 get_ipython().run_line_magic('autoreload', '2')

D:\Programs\anaconda3\lib\site-packages\IPython\core\interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
2315 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2316 with self.builtin_trap:
-> 2317 result = fn(*args, **kwargs)
2318 return result
2319

<D:\Programs\anaconda3\lib\site-packages\decorator.py:decorator-gen-65> in load_ext(self, module_str)

D:\Programs\anaconda3\lib\site-packages\IPython\core\magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):

D:\Programs\anaconda3\lib\site-packages\IPython\core\magics\extension.py in load_ext(self, module_str)
31 if not module_str:
32 raise UsageError('Missing module name.')
---> 33 res = self.shell.extension_manager.load_extension(module_str)
34
35 if res == 'already loaded':

D:\Programs\anaconda3\lib\site-packages\IPython\core\extensions.py in load_extension(self, module_str)
78 if module_str not in sys.modules:
79 with prepended_to_syspath(self.ipython_extension_dir):
---> 80 mod = import_module(module_str)
81 if mod.__file__.startswith(self.ipython_extension_dir):
82 print(("Loading extensions from {dir} is deprecated. "

D:\Programs\anaconda3\lib\importlib\__init__.py in import_module(name, package)
125 break
126 level += 1
--> 127 return _bootstrap._gcd_import(name[level:], package, level)
128
129

D:\Programs\anaconda3\lib\importlib\_bootstrap.py in _gcd_import(name, package, level)

D:\Programs\anaconda3\lib\importlib\_bootstrap.py in _find_and_load(name, import_)

D:\Programs\anaconda3\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'autoreload '

最佳答案

原因是模块名称末尾有一个额外的空格。我看到了一个类似的堆栈线程和 here供您引用。

我用模块名称后的空格运行魔法,但最终出现了同样的错误。下面是堆栈跟踪的最后几行。

~\anaconda3\lib\importlib\_bootstrap.py in _gcd_import(name, package, level)

~\anaconda3\lib\importlib\_bootstrap.py in _find_and_load(name, import_)

~\anaconda3\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'autoreload '

解决方案是删除 %load_ext autoreload 魔法后的空格。它应该是“%load_ext autoreload”而不是“%load_ext autoreload”。

Spyder IPython 控制台似乎在代码执行之前进行了一些文本处理(修剪空格)。 Google Colab 也执行相同的操作,因此不会引发错误。

关于jupyter-notebook - 重新加载在 jupyter notebook 中不起作用,但在 Ipython 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65234002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com