Fork me on GitHub

python 在venv 环境下运行简单的jupyter notebook

在 Python 的 venv 虚拟环境中运行一个简单的 Jupyter Notebook,你可以按照以下步骤操作:


✅ 一、创建并激活 venv 环境

1
2
3
4
5
6
7
8
# 创建虚拟环境(如:venv)
python -m venv venv

# Windows 激活方式
venv\Scripts\activate

# macOS/Linux 激活方式
source venv/bin/activate

✅ 二、安装 Jupyter Notebook(或 JupyterLab)

1
2
3
pip install notebook  # 经典 Notebook
# 或者:
pip install jupyterlab # 更现代的界面

✅ 三、安装内核(可选,但推荐)

安装 ipykernel,并将当前 venv 注册为一个内核:

1
2
pip install ipykernel
python -m ipykernel install --user --name=venv --display-name "Python (venv)"

这样你在 Jupyter 中就能看到 Python (venv) 内核选项。


✅ 四、启动 Notebook 服务

1
2
3
jupyter notebook
# 或者
jupyter lab

启动后会自动打开浏览器页面,你就可以新建 notebook 并运行 Python 代码了。


✅ 五、验证环境是否正确

在 Notebook 新建一个 Cell,输入:

1
2
3
!which python  # macOS/Linux
# 或
!where python # Windows

输出路径应指向你的虚拟环境中的 Python,例如:

1
/path/to/venv/bin/python

安装 ipykernel 并注册当前虚拟环境为 Jupyter 内核的意义

Jupyter 是独立于虚拟环境运行的;
虽然你在命令行激活了 venv,但 Jupyter 不知道你用了哪个环境;
安装 ipykernel 并注册后,Jupyter 就能识别你这个虚拟环境,才能在 notebook 里正确地运行、加载库,否则 notebook 会“用错解释器”。

更通俗直白的方式解释一下:


🌰 场景比喻:Jupyter 是饭店,venv 是你的家

  • Jupyter Notebook 就像一个饭店,你进去可以点菜(写代码)。
  • 但这个饭店默认只认识“官方菜单”(系统 Python 环境)。
  • 你有一个特别定制的菜单(比如你家厨房安装了特殊库:pandas==1.5.3numpy==1.19),这个菜单在 虚拟环境 venv 里
  • 如果你不告诉饭店你有这个菜单,Jupyter 是看不到你 venv 里的东西的,也就没法给你做这顿饭。

💡 为什么要安装 ipykernel 并注册?

安装 ipykernel 就是 让你的厨房能与饭店通讯

注册内核就是 告诉饭店“这是我家的菜单”,你以后可以选用它来做菜。

换句话说:

  • Jupyter 是独立于虚拟环境运行的
  • 虽然你在命令行激活了 venv,但 Jupyter 不知道你用了哪个环境;
  • 安装 ipykernel 并注册后,Jupyter 就能识别你这个环境,才能在 notebook 里正确地运行、加载库。

🎯 举个真实用例(最常见的情况):

你有两个项目:

项目名 虚拟环境 依赖库
项目 A venv_a pandas==1.5
项目 B venv_b pandas==2.2

如果你不给这两个环境注册内核,打开 Jupyter 后,它只认识一个系统环境,运行 notebook 时:

  • 项目 A 的代码报错(因为系统里是 2.2,不兼容)
  • 项目 B 的 notebook 运行错地方(因为 Jupyter 根本没用你的 venv)

你就会很抓狂。


✅ 安装并注册后:

你打开 Jupyter,左上角就能选择内核,能看到这些选项:

  • Python 3 (系统默认)
  • Python (venv_a)
  • Python (venv_b)

这时你就能根据项目自由选择对应的环境,确保运行正确的依赖。


🔚 总结一句话:

安装 ipykernel 并注册内核,就是 让你的虚拟环境能被 Jupyter Notebook 正确识别和使用,否则 notebook 会“用错解释器”。

-------------The End-------------