Jupyter笔记本FileNotFoundError - 查找错误的Anaconda目录

3

我遇到了打开jupyter notebook文件的问题。在查找Python时,Jupyter notebook会出现FileNotFoundError错误:

Traceback (most recent call last):
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/notebook/base/handlers.py", line 503, in wrapper
        result = yield gen.maybe_future(method(self, *args, **kwargs))
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
        value = future.result()
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
        raise_exc_info(self._exc_info)
      File "<string>", line 3, in raise_exc_info
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
        yielded = self.gen.throw(*exc_info)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/notebook/services/sessions/handlers.py", line 75, in post
        type=mtype))
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
        value = future.result()
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
        raise_exc_info(self._exc_info)
      File "<string>", line 3, in raise_exc_info
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
        yielded = self.gen.throw(*exc_info)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 79, in create_session
        kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
        value = future.result()
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
        raise_exc_info(self._exc_info)
      File "<string>", line 3, in raise_exc_info
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1021, in run
        yielded = self.gen.throw(*exc_info)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/notebook/services/sessions/sessionmanager.py", line 92, in start_kernel_for_session
        self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 1015, in run
        value = future.result()
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/concurrent.py", line 237, in result
        raise_exc_info(self._exc_info)
      File "<string>", line 3, in raise_exc_info
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/tornado/gen.py", line 285, in wrapper
        yielded = next(result)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/notebook/services/kernels/kernelmanager.py", line 87, in start_kernel
        super(MappingKernelManager, self).start_kernel(**kwargs)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/jupyter_client/multikernelmanager.py", line 110, in start_kernel
        km.start_kernel(**kwargs)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/jupyter_client/manager.py", line 257, in start_kernel
        **kw)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/jupyter_client/manager.py", line 203, in _launch_kernel
        return launch_kernel(kernel_cmd, **kw)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/site-packages/jupyter_client/launcher.py", line 128, in launch_kernel
        proc = Popen(cmd, **kwargs)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/subprocess.py", line 707, in __init__
        restore_signals, start_new_session)
      File "/Users/myusername/anaconda/envs/dlnd/lib/python3.6/subprocess.py", line 1326, in _execute_child
        raise child_exception_type(errno_num, err_msg)
    FileNotFoundError: [Errno 2] No such file or directory: '/Users/myusername/anaconda3/envs/py3/bin/python'

我是一名在线课程的学生。我首先创建了一个conda环境,如下所示:

conda create --name dlnd python=3
source activate dlnd
conda install numpy matplotlib pandas jupyter notebook

然后我尝试打开课程中提供的文件:

jupyter notebook dlnd-your-first-neural-network.ipynb

当出现错误时,我怀疑问题在于我没有 /Users/myusername/anaconda3/ 目录(因此出现了 FileNotFoundError)。我的所有Anaconda安装都在 /Users/myusername/anaconda/ 中,并且我已经使用jupyter笔记本电脑工作了几周,在不同的环境中运行各种 .ipynb 文件,没有遇到任何重大问题。

我不确定为什么jupyter笔记本电脑在特定情况下正在查找 anaconda3/。我尝试重新安装,但是再次安装在 /Users/myusername/anaconda/ 中。

有更多经验的人知道我缺少什么吗?

我使用Macbook pro 10.11


1
https://dev59.com/DloU5IYBdhLWcg3we20R - Nehal J Wani
1
你从哪里获得这个ipynb文件的?每个ipynb文件都指定了它应该使用哪个内核,这可能是错误的源头。 - darthbith
我已经根据自己解决问题的方法发布了一个答案,但如果有人有更详细、更优雅的答案,我很乐意接受。 - David
1
你将使用哪些工具?如果是 numpyscipysklearnpandasmatplotlib 等,你可以单独安装它们而不使用 anaconda。你不需要任何工具来替换 anaconda - Akavall
1
不要在Anaconda中使用virtualenv - 使用conda环境!https://dev59.com/sFsW5IYBdhLWcg3w-bH_ - darthbith
显示剩余7条评论
1个回答

4

根据@NehalJWani 提供的帖子,我找到了/Users/myusername/Library/Jupyter/kernels/python3/kernal.json,如下所示:

{
 "argv": [
  "/Users/myusername/anaconda3/envs/py3/bin/python",
  "-m",
  "ipykernel",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

将其修改为指定anaconda而不是anaconda3

{
 "argv": [
  "/Users/myusername/anaconda/envs/py3/bin/python",
  "-m",
  "ipykernel",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

尝试重新运行Jupyter笔记本,出现了新的错误:

尝试重新运行Jupyter笔记本,出现了新的错误:

FileNotFoundError: [Errno 2] No such file or directory: 
'/Users/myusername/anaconda/envs/py3/bin/python'

这是一个正确的方向,因为现在我们至少正在查找anaconda而不是anaconda3。但是,它也在查找envs/py3/,而我没有一个py3环境。

像@darthbith建议的那样查看.ipynb文件,文件元数据为:

"metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}

我发现这里指定了python3内核,但没有指定py3环境。
最终,我只是创建了一个py3环境,而不是我想要的dlnd环境。
conda create -n py3 python=3

尝试再次运行笔记本时,我遇到了这个错误:
/Users/myusername/anaconda/envs/py3/bin/python:
No module named ipykernel

因此,我只需安装ipykernal以及其他我最终需要的依赖项:

conda install ipykernel numpy matplotlib pandas jupyter notebook

现在它可以正常工作了。


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