模块未找到错误:没有名为“autoreload”的模块。

20

我在jupyter notebook上使用python 3内核运行卷积神经网络教程中的以下代码,结果出现了“ModuleNotFoundError: No module named 'autoreload'(找不到名为 'autoreload' 的模块)”的错误提示;


import numpy as np
import h5py          
import matplotlib.pyplot as plt

%matplotlib inline
plt.rcParams['figure.figsize'] = (5.0, 4.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

%load_ext autoreload   
%autoreload 2          
np.random.seed(1)

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-3d0ea63c7843> in <module>()
      8 plt.rcParams['image.cmap'] = 'gray'
      9 
---> 10 get_ipython().magic('load_ext autoreload   # reload modules before executing user code')
     11 get_ipython().magic('autoreload 2          # Reload all modules (except those excluded by %aimport)')
     12 

/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py in magic(self, arg_s)
   2156         magic_name, _, magic_arg_s = arg_s.partition(' ')
   2157         magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2158         return self.run_line_magic(magic_name, magic_arg_s)
   2159 
   2160     #-------------------------------------------------------------------------

/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line)
   2077                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2078             with self.builtin_trap:
-> 2079                 result = fn(*args,**kwargs)
   2080             return result
   2081 

<decorator-gen-62> in load_ext(self, module_str)

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

/opt/conda/lib/python3.6/site-packages/IPython/core/magics/extension.py in load_ext(self, module_str)
     35         if not module_str:
     36             raise UsageError('Missing module name.')
---> 37         res = self.shell.extension_manager.load_extension(module_str)
     38 
     39         if res == 'already loaded':

/opt/conda/lib/python3.6/site-packages/IPython/core/extensions.py in load_extension(self, module_str)
     81             if module_str not in sys.modules:
     82                 with prepended_to_syspath(self.ipython_extension_dir):
---> 83                     __import__(module_str)
     84             mod = sys.modules[module_str]
     85             if self._call_load_ipython_extension(mod):

ModuleNotFoundError: No module named 'autoreload'   

我在这个问题上找不到任何解决方案。我应该如何修复这个错误?


这只是一个导入错误(伪装成魔法)。我猜你也无法成功导入import autoreload。你的Python路径出了问题。在你的路径中应该有一个autoreload.py,通常在类似于.../lib/python3.6/site-packages/IPython/extensions的地方。在sys.path中寻找类似的东西。 - Marmaduke
实际上,我按照您的建议找到了autoreload.py。它在...\Lib\site-packages\IPython\extensions目录下。还有什么可能是原因或者接下来我应该做什么? - Nat
你能直接使用 import autoreload 加载模块吗?扩展文件夹是否在 sys.path 中? - Marmaduke
2个回答

25

模块"autoreload"属于IPython库,它在Jupyter后台运行。

我也遇到了同样的错误,是因为空格导致的,请参见:

片段代码

所以请确保命令结尾没有空格


1
哇!是的!我花了很多时间试图理解为什么 import autoreload 起作用,而 %load_ext autoreload 却不起作用。看来这些神奇的代码行与标准 Python 代码行的读取方式不同!我确实在 autoreload 后面的行末有一个空格! - Dr_Zaszuś
1
真是个烦人的错误!我也被卡住了,谢谢你指出正确的方向——结尾处的空格确实是ipython魔法的问题。 - cbcoutinho
@Luís Eduardo,谢谢。这确实是问题所在。由于在魔术行之后,我只有一个(空格后面的)注释,我以为解释器不会处理它,所以很难看出问题出在哪里。 - Buzz B

14
我因为在魔术命令之后添加了注释而遇到了相同的错误:

不好的写法:

%load_ext autoreload # this comment should be removed

好:

%load_ext autoreload

5
我发现,即使在 "%load_ext autoreload" 后面仅仅留一个空格也会导致错误。 - Nayef
2
我可以确认@Nayef所描述的行为,我有一个尾随的空格并且得到了相同的错误。 - VanBantam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接