python - Jupyter notebook 在我的机器中使用了与我的默认 python 版本(Python 3.9)不同的内核(python 3.8)
问题描述
我在 Jupyter Notebook 中运行一些代码,并在我的机器中发现了这个问题。
- 当我执行“print(sys.version)”时,我得到了我的 jupyter 内核使用的 python 版本是 3.8.2,如下所示。
- 当我执行“!python -V”时,我得到了另一个 python 版本,它是 3.9.1。
- 当我输入“!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)版本。
解决方案
没有提到您如何创建 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"
- 您从笔记本中看到的工作区\目录将是您在其中实例化它的那个。
- 您可以从浏览器访问 jupyter notebook 的用户界面:http: //127.0.0.1 :8888
- 您也可以尝试这篇文章或类似文章:https ://www.codingforentrepreneurs.com/blog/install-jupyter-notebooks-virtualenv/
推荐阅读
- java - spring框架嵌套java.io.FileNotFoundException:
- sqlalchemy - 如何对通过 API 从会话/进程中分发出来并随后通过 API 返回进行更新的实体进行乐观并发控制
- c++ - cpp 函数应如何将“-1”作为 char* 返回?
- sql - 如何在 Hive 中使用 like 和 % 并在字符串中使用反斜杠?
- javascript - 卡被拒绝时未调用 Stripe CLI webhook
- python - 如何在python中进行舍入函数
- sap-basis - 如何创建 STC01 任务列表
- java - Android java.lang.AbstractMethodError on requestLocationUpdates
- recaptcha - 我是否需要在所有页面上都有 recaptcha v3 脚本来计算正确的分数
- python - 如何使用函数使我的代码更加优化?