python-3.x - Jupyter notebook Python 内核 - FileNotFoundError: [Errno 2] No such file or directory python3
问题描述
问题
在 Jupyter notebook 中,如何解决找不到 Python 解释器的问题。
环境
- Ubuntu 18.04
- 使用 Python 3.7 的 Anaconda 环境
问题
启动一个 jupyter notebook 并使用 Python 3 内核创建一个 notebook 并得到错误。nlp_in_tensorflow是一个已删除的 conda 环境。
Traceback (most recent call last):
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/web.py", line 1704, in _execute
result = await result
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/notebook/services/sessions/handlers.py", line 72, in post
type=mtype))
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 762, in run
value = future.result()
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/notebook/services/sessions/sessionmanager.py", line 88, in create_session
kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 762, in run
value = future.result()
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 769, in run
yielded = self.gen.throw(*exc_info) # type: ignore
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/notebook/services/sessions/sessionmanager.py", line 101, in start_kernel_for_session
self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/tornado/gen.py", line 762, in run
value = future.result()
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/notebook/services/kernels/kernelmanager.py", line 176, in start_kernel
kernel_id = await maybe_future(self.pinned_superclass.start_kernel(self, **kwargs))
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/jupyter_client/multikernelmanager.py", line 185, in start_kernel
km.start_kernel(**kwargs)
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/jupyter_client/manager.py", line 313, in start_kernel
self.kernel = self._launch_kernel(kernel_cmd, **kw)
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/jupyter_client/manager.py", line 220, in _launch_kernel
return launch_kernel(kernel_cmd, **kw)
File "/home/user/conda/envs/cs231n/lib/python3.7/site-packages/jupyter_client/launcher.py", line 131, in launch_kernel
proc = Popen(cmd, **kwargs)
File "/home/user/conda/envs/cs231n/lib/python3.7/subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "/home/user/conda/envs/cs231n/lib/python3.7/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/conda/envs/nlp_in_tensorflow/bin/python3': '/home/user/conda/envs/nlp_in_tensorflow/bin/python3'
解决方案
原因
Python 3 内核的 kernel.json 文件指向已删除的环境。
$ jupyter kernelspec list
Available kernels:
python3 /home/oonisim/.local/share/jupyter/kernels/python3
$ cat ~/.local/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"/home/user/conda/envs/nlp_in_tensorflow/bin/python3", <----- Referring to the deleted environment
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
资源
多个 Python 环境,无论是基于 Anaconda 还是 Python 虚拟环境,通常都是报告问题的根源。在许多情况下,这些问题源于在一个环境中运行的笔记本服务器,而内核和/或其资源来自另一个环境。
要检查的另一件事是将位于上述内核规范目录中的 kernel.json 文件通过运行 jupyter kernelspec list 标识。该文件将包含一个 argv 节,其中包含启动内核时要运行的实际命令。通常,在重新安装 python 环境时,以前的 kernel.json 会从旧的或不存在的位置引用 python 可执行文件。因此,在遇到内核启动问题时验证 argv 节以确保所有文件引用都存在并且是适当的总是一个好主意。
使固定
删除 ~/.local/share/jupyter/kernels/python3/kernel.json。
相关问题
- Jupyter Notebook 正在加载不正确的 Python 内核 #2563
- 使用多个 Python 和 IPython 路径运行 Jupyter - 3. Jupyter 如何知道要使用什么 Python
Jupyter 设置为能够使用各种“内核”或代码执行引擎。这些可以是 Python 2、Python 3、R、Julia、Ruby……有许多可能的内核可供使用。但是为了实现这一点,Jupyter 需要知道在哪里寻找相关的可执行文件:也就是说,它需要知道 python 位于哪个路径。
这些路径在 jupyter 的内核规范中指定,用户可以根据自己的需要调整它们。例如,这是我系统上的内核列表:
推荐阅读
- kubernetes - 干掉这个 kubernetes 配置 yaml 文件的最佳方法是什么?
- c# - Xamarin.Android:如何为每个通知添加唯一的 Intent
- jquery - Scrollmagic - 补间被另一个覆盖
- c# - 如何在基于令牌的身份验证中限制帐户
- bash - 在不同的文件中使用 For 和 save 和 saa
- python - Python:如何将函数的结果分配给我可以读取的变量_csv
- python-3.x - 基于重复的数据帧的折叠/转置列 - 熊猫
- android - OnClick 方法不启动新活动
- java - 尝试将对象存储在非常类型的变量中时不兼容的类型
- c# - 为角色添加空中滑行