首页 > 解决方案 > Jupyter notebook 在我的机器中使用了与我的默认 python 版本(Python 3.9)不同的内核(python 3.8)

问题描述

我在 Jupyter Notebook 中运行一些代码,并在我的机器中发现了这个问题。

  1. 当我执行“print(sys.version)”时,我得到了我的 jupyter 内核使用的 python 版本是 3.8.2,如下所示。
  2. 当我执行“!python -V”时,我得到了另一个 python 版本,它是 3.9.1。
  3. 当我输入“!jupyter kernelspec list”时,jupyter 内核只有 1 个 python 3。(忽略了我为上一个项目创建的虚拟环境 TFOD)

或者可以参考下图的输出。

在此处输入图像描述

但是,在我的机器上,我只安装了两个 python 版本,分别是 3.8 和 3.9,如下所示。我使用 3.9 作为我的默认值。

在此处输入图像描述

我实际上发现代码“!python -m ipykernel install --user --name=Python_39”可以解决我的问题,并让我创建了另一个使用 python 3.9 的内核。

但我仍然热衷于为什么会发生这种情况以及如何通过适当的方式更改(或添加)与安装在我的机器中的 python 相关的 Jupyter 内核?

因为 py3.9 是我的活动环境,因为我安装了许多库并希望在其上运行,而不是 jupyter notebook 中的其他(py3.8)版本。

标签: pythonjupyter-notebook

解决方案


没有提到您如何创建 Jupyter 笔记本服务器,但我建议您从 python 的虚拟环境中执行此操作

  • 这应该会激活一个 python 环境,当它被激活时,会给你一个特定的 python 版本和你在这个环境中安装的依赖项(python 库)的一致视图。
  • 当 virtualenv 被激活时,你可以使用python而不是激活的 virtualenv 告诉你的 shell 在被调用python3.x时引用它自己的 python 版本。python
  • 如果你的 jupyter 是从 virtualenv 实例化的,它将与这个特定的 python 版本一起工作——因为它是唯一知道的。
  • 如果您的项目已经使用了 venv,则每次都可以从中实例化 jupyter。

这是我在 linux shell 上做的一个片段:

// create a new venv:
shell# python3.9 -m venv ./myenv/
// activate the venv to operate on the shell:
shell# source ./myenv/bin/activate 
// install jupyter to the venvs libraries
(myvenv) shell# python3.9 -m pip install jupyter
// run the jupyter server
(myvenv) shell# python -m jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --allow-root"

推荐阅读