news 2026/9/17 5:34:13

Anaconda 与 Jupyter Notebook 环境配置实战:从安装到内核绑定与排错指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Anaconda 与 Jupyter Notebook 环境配置实战:从安装到内核绑定与排错指南

从本地 Python 环境被折腾到心态爆炸,到下定决心重装整个 Anaconda 生态,再到把 Jupyter Notebook 真正调教成顺手的数据分析工具,这一路我踩过的坑比很多人想象中要多得多。如果你正准备在新电脑上安装 Anaconda,或者已经被“Jupyter Notebook 打不开”“单元格执行没反应”“DLL load failed”这类问题折磨得怀疑人生,那这篇基于实战经验的完整教程就是为你准备的。

这篇文章会从一个真实使用者的角度,带你走一遍 Anaconda 下载安装、Jupyter Notebook 启动配置、虚拟环境创建、内核绑定、PyCharm 联动以及高频问题排查的全部流程。我不光会告诉你每一步的操作方法,还会把每个操作背后的原理和逻辑讲清楚——为什么这个选项要勾、那个路径不能带中文、为什么明明装好了 conda 命令却找不到。所有内容都来自我实际动手过程中的记录,你可以直接当作作业抄,也可以拿来做系统性的环境整理参考。

1. 先搞明白:Anaconda 到底是什么,为什么要装它

很多新手上来就搜“Anaconda 安装教程”,跟着教程一步步点下去,装完了也不知道自己到底装了个啥。这个阶段不清不楚,后面出问题时你连从哪里排查都不知道。所以我先花点篇幅把最基础的概念讲透,你后面看任何教程都会顺畅很多。

1.1 Anaconda 和 Jupyter Notebook 各自扮演什么角色

Anaconda 本质上是一个“全家桶式”的 Python 发行版。它不只是一个解释器,而是把 Python 解释器、conda 包管理器、几百个常用科学计算扩展包(NumPy、Pandas、Matplotlib、SciPy 等)、以及 Jupyter Notebook 等开发工具捆绑在一起,一次安装全部搞定。

Jupyter Notebook 则是一个基于网页的交互式开发环境。你在浏览器里写代码,浏览器把代码发给后端内核执行,再把结果(包括文本输出、图表、甚至富文本)渲染回来。这种“文档里写代码”的交互方式特别适合数据分析、教学演示和日常脚本调试。

两者的关系用一句话概括:Anaconda 是承载你 Python 开发和数据分析工作的“基地”,Jupyter Notebook 是基地里一个极其顺手的“工作台”。装好 Anaconda 后,Jupyter Notebook 通常已经被预装好了,不需要你再单独下载。

1.2 为什么推荐用 Anaconda 而不是裸装 Python

我自己早期用过一段时间的官方 Python,后来彻底转向了 Anaconda。区别主要有三点。

第一,环境隔离能力。数据科学项目之间经常出现依赖冲突。项目 A 要用 TensorFlow 2.x,项目 B 要用 TensorFlow 1.x,如果全放在一个全局环境里,装来装去迟早出问题。conda 可以创建多个互相隔离的虚拟环境,每个环境有独立的 Python 版本和包集合,互不干扰。这就好比每个人住单间,公共设施共用,但私人物品各归各的。

第二,包的安装和管理极舒服。用 pip 装包时会遇到编译错误、依赖冲突、版本不兼容之类的问题。conda 的包管理器会自动解决依赖关系,尤其是对 NumPy、SciPy 这类带底层二进制库的包,conda 会直接下载编译好的 wheel 包,不存在“本机没有 C++ 编译器导致安装失败”这种破事。

第三,跨平台和开箱即用。Windows、Linux、macOS 都有一致的使用体验。装完 Anaconda,你至少省去了手动装十几个基础包的时间和心智负担。

1.3 安装前必须想清楚的准备工作清单

真正动手之前,先把下面这五件事确认清楚,否则安装过程中很容易遇到预料之外的问题。

  • 确认 Python 版本需求。Anaconda 新版默认自带的是 Python 3.11 或 3.12,如果你的项目需要旧版本(比如某些深度学习框架不支持过新的 Python),也不要慌,装完 Anaconda 之后可以随时创建指定版本的虚拟环境。
  • 检查磁盘空间。Anaconda 安装包大约 600MB 左右,装完占用的空间在 3 到 5GB 之间。C 盘空间紧张的话,安装目录可以改到 D 盘,不过路径千万别带中文和空格。
  • 卸载旧版 Anaconda(如果电脑上有残留)。曾经被我坑过一次:旧版没卸干净,新版装不上去,最后花了一下午清理注册表。这个问题后面专门讲。
  • 选择 64 位还是 32 位。新电脑一律选 64 位(x86_64),除非你的 CPU 非常老。
  • 决定安装方式。Windows 上有图形化安装包,Linux 服务器上通常用命令行安装。两种我都用过,本文都会覆盖。

提示:如果你之前通过官方 Python 装了 Jupyter 和一堆数据包,建议装 Anaconda 前给重要脚本做个备份,再考虑是不是要把旧 Python 从系统 PATH 环境变量里移除。Anaconda 和裸 Python 同时存在时,容易发生“命令行里 pip 指向了另一个 Python”的混乱情况。

2. Anaconda 下载与安装全流程详细拆解

这章是操作的重头戏。我把 Windows 和 Linux 两条安装路线都写出来,并针对每一步给出背后的原理说明。别跳过细节,很多问题就是细节决定成败。

2.1 下载渠道怎么选:官网还是清华镜像源

这是新手遇到的第一个分岔路。打开 Anaconda 官网(anaconda.com/download)其实是最可靠的来源,但它有两个问题:一是国内访问速度不稳定,动不动就下载到一半断掉;二是默认推荐下载最新版,有时候你并不需要最新版(比如某些项目要求 Python 3.9,但新版 Anaconda 已经自带 Python 3.12,不过这个其实可以在后续创建虚拟环境时解决,不影响大局)。

更推荐的做法是用清华大学的开源软件镜像站。地址是 mirrors.tuna.tsinghua.edu.cn/anaconda/archive/。打开之后你会看到一长串历史版本列表,格式是 Anaconda3-版本号-操作系统-架构.exe(Windows)或 .sh(Linux)。直接选最新的 win64 exe 就行。

为什么用清华镜像?因为它是国内高校维护的开源镜像服务器,同步时间快,带宽充足,下载速度经常是官网的好几倍。而且它提供历史版本,你在某些特殊场景下可以回退到旧版 Anaconda。

说句题外话,很多教程会让新手配置 conda 的国内源,比如清华源的 conda 配置文件。这个操作本身是合规的,就是为了加快 conda 下载包的速度,跟“换源加速”是同样的逻辑。我建议装完 Anaconda 之后顺手配置一下,具体命令后面会说。

2.2 Windows 平台安装详细步骤

下载完成后你会得到一个 Anaconda3-xxxx-Windows-x86_64.exe 文件。右键“以管理员身份运行”,然后跟着安装向导走。

第一个关键选择:安装类型。界面会问你 Install for 哪个账号,选“Just Me (recommended)”就行。选“All Users”虽然也能装,但在 Windows 上会引入至少两个额外问题:一是 UAC 权限在 Jupyter 或 conda 操作时频繁弹窗,二是环境变量的修改在系统级生效,卸载时容易留下权限残留。个人电脑没必要选 All Users。

第二个关键选择:安装路径。默认会把 Anaconda 装到 C:\Users\用户名\anaconda3 下。如果你想让陌生人都能看这门课程代码,可以改到 D:\Anaconda3。但记住两个禁忌:路径中不能出现中文;路径中不能有空格。例如 D:\Program Files\Anaconda3 这种就是典型的错误示范,很多底层工具会直接崩。

第三个关键选择:是否勾选“Add Anaconda3 to my PATH environment variable”。这个选项非常有意思,官方安装程序里默认是不勾选的,并且会红字警告你“不建议勾选”。但网上很多老教程会告诉你一定要勾。到底该听谁的?我的建议是:如果是首次安装,你不太懂 conda 和系统环境变量,那就勾上,图个省心;如果你对命令行有一定了解,我更推荐不勾,装完打开 Anaconda Prompt 用 conda init 来配置。两种方式的背后逻辑是——手动添加 PATH 会把你 Anaconda 的 python.exe 放到系统全局,这会劫持系统里其他 Python 相关命令,容易引发混乱;conda init 则更智能地管理路径,只在 Anaconda 环境下生效。后面我会专门用一节来讲这个问题。

点击 Install 之后,等待进度条走完,大约需要几分钟到十几分钟。安装完成后有两种方式验证是否成功。第一种是打开开始菜单,找到 Anaconda Prompt,输入:

conda --version python --version

正常情况下会输出版本号,比如 conda 24.9.2 和 Python 3.12.7。第二种方式是打开命令行工具(CMD),输入:

python -c "import numpy, pandas; print('ok')"

如果没有任何报错输出,说明环境可用。

2.3 Linux 服务器安装 Anaconda

很多做深度学习或数据处理的人,实际运算环境在 Linux 服务器上。Linux 安装 Anaconda 跟 Windows 的图形界面完全是另一个路子。

先用 wget 下载安装包,这里同样用清华镜像:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

下载完成后用 bash 执行安装脚本:

bash Anaconda3-2024.10-1-Linux-x86_64.sh -b -p ~/anaconda3

-b参数表示静默安装,-p参数指定安装路径。如果不加-b,安装过程中会有一堆交互问答,比如“是否接受协议”“是否同意初始化 conda init”,比较繁琐。服务器上我通常会加-b,因为很多时候是用脚本批量部署,交互式安装不适合自动化。

安装完成后,执行:

source ~/.bashrc conda init

conda init会在你的 shell 配置文件中写入初始化代码,这样每次打开终端时 conda 命令自动可用。如果你用的是 zsh,可以改成conda init zsh

这里有个坑——如果服务器上已经系统自带的 Python 被某个项目依赖,而你用 Anaconda 的 Python 覆盖了系统 Python,很可能会导致某些系统工具(比如 yum、apt 相关脚本)报错。解决思路是先不要让 Anaconda 默认激活 base 环境,修改 conda 配置:

conda config --set auto_activate_base false

这样打开终端时 conda 本身可用,但不会自动切换 Python 环境,需要用conda activate时才手动进入。这个配置在 Linux 服务器上非常实用。

2.4 环境变量这件事,到底怎么处理最稳妥

环境变量的问题是搜索热词里出现频率极高的,说明很多人都在这一步出过问题。如果你安装时勾选了“Add to PATH”,那恭喜你,至少 conda 暂时是能用的。但这种做法相当于把 Anaconda 的三个关键目录(主目录、Scripts 目录、Library/bin 目录)强行插进系统全局 PATH 的前面,后果就是你在 CMD 里敲 python,进的永远是 Anaconda 的 Python,系统里其他程序如果用 Python 也会被指向 Anaconda,非常容易出现版本打架。

我更推荐的做法是安装时不勾选 PATH,安装完成后打开 Anaconda Prompt,执行:

conda init

这个命令会往当前用户的 shell 配置里追加一段 conda 初始化代码,并告诉系统在平时使用中如何找到 conda 的相关命令。它只对当前用户生效,不影响其他用户,也不会影响系统路径里已有的 Python。日常使用的时候,你打开 CMD 或 PowerShell 直接敲 conda 命令是可以的(因为 init 写在注册表或 profile 里),但更推荐的操作方式是永远从 Anaconda Prompt 开始工作,因为它已经把 Anaconda 的所有环境都配好了。

如果你已经勾了 PATH,现在想改回来,可以手动编辑环境变量,把 Anaconda 相关的三条路径删除,然后打开 Anaconda Prompt 里运行 conda init。如果你装完后 CMD 里敲 conda 提示“不是内部或外部命令”,那就手动打开 Anaconda Prompt 试试能不能用,能用的话敲 conda init 即可。

3. 打开 Jupyter Notebook 的正确姿势和调教技巧

Anaconda 装好之后,Jupyter Notebook 不是摆在桌面快捷方式上的,你需要知道几种启动方式和启动之后怎么用得更顺手。这一章我把自己常用的方法和配置经验都整理出来。

3.1 从 Anaconda Navigator 图形界面启动

Anaconda Navigator 是 Anaconda 自带的图形化管理面板,长得很像手机 App 商店。双击打开后,你会看到 Jupyter Notebook、JupyterLab、Spyder、VS Code 等一排工具卡片,每个卡片下面都有一个 Launch 按钮。

点击 Jupyter 卡片上的 Launch 按钮,系统会自动启动一个后台服务,并默认打开你电脑的默认浏览器,访问 http://localhost:8888。这时你就正式进入 Jupyter Notebook 的工作界面了。

Navigator 方式适合完全不碰命令行的用户。它的好处是直观,不用记命令;坏处是启动速度慢,而且有时候会出现“Loading applications”半天不动的卡顿情况。这种情况通常是因为 Navigator 在检查包和更新,耐心等一会儿基本都会过去,但我个人日常更推荐命令行启动,效率高很多。

3.2 用命令行启动 Jupyter Notebook:高级用户的日常操作

在 Anaconda Prompt 里输入以下命令,效果其实和 Navigator 启动是一样的:

jupyter notebook

然后终端里会出现一长串输出,末尾有“Copy/paste this URL into your browser when you connect”的字样。浏览器会自动打开 http://localhost:8888/tree,这个页面就是你笔记本文件的管理器。

如果你希望指定运行目录(比如你所有的项目都在 D:\work\data_project),先 cd 到那个目录:

cd D:\work\data_project jupyter notebook

为什么不直接在默认目录下启动?因为 Jupyter Notebook 的“文件树”是相对于启动目录的,如果你在 C 盘用户目录下启动,想在界面上直接打开 D 盘的项目文件会很别扭,得一层层向上导航或者靠路径跳转。最好的习惯是把 Jupyter 的启动目录和你实际的工程目录对齐。

有些场景下你需要在服务器上远程使用 Jupyter,这时候你得加上两个参数:

jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser

--ip=0.0.0.0表示允许所有网络接口访问,--no-browser表示不在服务器本地打开浏览器(因为服务器很可能没有图形界面),然后你在本地浏览器输入“服务器IP:8888”就能访问了。但这会引来安全问题,所以生产环境一定要设置密码,用 jupyter notebook password 命令来设置访问密码。

顺带一提,JupyterLab 是 Notebook 的升级版界面,启动方式是:

jupyter lab

JupyterLab 支持多标签页、可拖拽布局、文件管理器沉浸式体验,还支持直接打开终端。如果你是新用户,我反而建议你直接用 JupyterLab,因为它既兼容 .ipynb 文件,又有更好的交互体验。

3.3 上手就用:单元类型、快捷键和 Markdown 目录生成

进到 Notebook 界面后,你看到的是一个一个单元格(Cell)。单元格分为两类:Code 单元和 Markdown 单元。Code 单元里写 Python 代码,快捷键 Shift + Enter 运行并把光标自动移到下一个单元格;Markdown 单元里可以写带格式的文档,同样用 Shift + Enter 渲染成富文本。

Markdown 单元在写项目说明、数据分析报告时非常有用。你可以在里面写一级到六级标题(# 到 ######)、加粗斜体、插入链接、插入图片、甚至写 LaTeX 数学公式。项目热词里有个“jupyter notebook 怎么生成 markdown 目录语法”,指的是一篇长的 Jupyter 笔记在浏览器里如何快速定位到各个大标题。

做法是在 Markdown 单元的开头,用 HTML 注释格式放一段目录占位代码:

<!-- TOC --> # 1. 项目背景 # 2. 数据准备 # 3. 模型训练

或者直接用 JupyterLab 扩展 / nbextensions 的 Table of Contents 插件,它会在界面左侧自动生成一个可点击的目录树。如果你是 Notebook 经典界面,需要先启用 nbextensions 插件,然后在 Configurator 里勾选 Table of Contents 2。

快捷键方面,最常用的几个我整理一下:Esc 进入命令模式,Enter 进入编辑模式;命令模式下 A 在当前单元格上方插入新单元格,B 在下方插入;DD 连续按两次 D 删除单元格;Y 把单元格切换为 Code 类型,M 切换为 Markdown 类型;Shift + Tab 在编辑代码时查看函数提示。这些组合键能让你的操作速度直接翻倍,值得花十分钟练熟。

3.4 代码自动补齐和主题美化

很多新手觉得 Jupyter 默认没有自动补全很不方便。实际上 6.x 版本之后已经自带部分补全功能,你输入import nu后按 Tab 会弹出候选列表。但这个补全比较基础,想更好用可以安装 nbextensions 的 hinterland 插件,或直接用 JupyterLab(JupyterLab 的补全体验好很多)。

主题美化是个老生常谈的话题。用jupyterthemes包可以一键换主题。安装很简单:

pip install jupyterthemes jt -t oceans16 -f fira -fs 12 -T -N

-t指定主题名,-f指定字体,-fs指定字号,-T显示工具栏,-N显示文件名。不过我现在的建议是:如果你还在用经典 Notebook,不如直接迁到 JupyterLab,因为 JupyterLab 自带一套现代化的亮色/暗色主题切换(Settings -> JupyterLab Theme),不需要额外折腾。

注意:jupyterthemes 和 nbextensions 这类工具对新版本 Jupyter 的支持参差不齐。装之前先确认自己的 Jupyter 版本(jupyter --version),如果版本太新,某些插件可能装完不生效甚至直接把界面搞崩。遇到这种情况优先考虑卸载插件,而不是回退 Jupyter 版本。

4. 虚拟环境管理与内核绑定:Jupyter Notebook 进阶必学的核心操作

这一章会解决你到中后期一定会遇到的几个问题:为什么我明明在 conda 环境里装好的包,Jupyter 里 import 却提示找不到?为什么在新环境里打开 Jupyter 跟 base 环境一模一样?这些都是“内核”和“环境”没有正确绑定的表现。

4.1 为什么要学虚拟环境:依赖隔离就是你的安全气囊

很多数据科学新手装包的流程是:打开 Anaconda Prompt,直接 pip install 一堆包,用到哪个装哪个,最后全局环境装了一两百个包,版本冲突随时可能爆发。

我自己吃过一次大亏。当时一个项目需要 TensorFlow 1.15(旧 API),另一个项目需要 PyTorch 新版,两个依赖互相打架,无论怎么装总有一个项目起不来。最后我把所有包清空重来,用 conda 创建了两个独立环境,问题彻底解决。

conda 创建虚拟环境的命令很简单:

conda create -n myproject python=3.10

-n后面的参数是环境名称,你可以任意命名;python=3.10是创建出来的环境里 Python 的具体版本。创建完成之后,激活这个环境:

conda activate myproject

激活后,命令行提示符前面会出现(myproject)字样,说明你现在在这个环境里操作。这时你敲python --version看到的会是 3.10,跟 base 环境的 Python 版本不一样。在激活状态下用 pip 或 conda 安装的所有包,都只属于这个环境,不会污染 base。

退出环境:

conda deactivate

这套机制就是“依赖隔离的安全气囊”:环境出问题了,直接删掉重建就行,不影响全局。

4.2 把 conda 环境注册成 Jupyter 内核

现在到了关键部分。你在终端里用 conda create 创建了一个新环境,激活后 pip install 了一些包,然后你用jupyter notebook打开 Jupyter,新建一个笔记本,发现 import 那些包还是失败。为什么?

因为 Jupyter Notebook 的后端内核默认是可执行程序kernel和配置的集合,不是简单地“当前 Python”。刚才那个新环境里的 Python 内核还没有被 Jupyter 登记,Jupyter 默认只用 base 环境的 Python 来跑代码。

解决办法分两步。首先在新环境里安装 ipykernel:

conda activate myproject pip install ipykernel

然后把新环境注册为 Jupyter 的一个内核:

python -m ipykernel install --user --name myproject --display-name "Python (myproject)"

--name是内核的唯一标识符,--display-name是 Jupyter 界面下拉菜单里显示的名称。执行完这条命令后,打开 Jupyter Notebook,在“新建”下拉菜单里就能看到“Python (myproject)”这个选项,选择它,新的笔记本就跑在 myproject 环境里了。

以后每次更新这个环境的包,不需要重新注册内核。只有当你新建了 conda 环境时,才需要重复上面两步。查看当前已注册的所有内核:

jupyter kernelspec list

如果你删除了某个 conda 环境,记得同步删除对应内核:

jupyter kernelspec remove myproject

4.3 实战案例:解决 cannot import name 'mesh' from 'simpeg' 这类导入报错

热词列表里有一条非常典型的问题:

from simpeg import maps, mesh ImportError: cannot import name 'mesh' from 'simpeg'

这个问题的本质是:SIM 包(SimPEG,一个地球物理模拟框架)的 API 在新版本中把mesh模块改名或者挪位置了,而你装的这个版本不支持from simpeg import mesh这种导入方式。

排查这类问题是有套路的。我一般按三步走。

第一步,检查你当前 Python 环境是不是跟你以为的环境一致。在 Jupyter 里通过:

import sys print(sys.executable)

如果打印出来的路径不是你 conda 环境里的 python.exe,而是 base 或系统别的 Python,那基本就是内核绑定出问题了,回到 4.2 节的流程重新注册内核。

第二步,确认包版本是否匹配。在终端里运行:

conda activate simpeg-env pip show simpeg

查看版本,然后去 SimPEG 的官方文档查这个版本的 API。如果文档里写的是from simpeg import mesh在旧版本可用,新版本改用from discretize import TensorMesh这种更底层的接口,那就把导入改成新写法。这种情况常见于“照着老教程写代码,装了新版本包”的经典冲突。

第三步,检查文件命名冲突。如果当前目录下有文件叫 simpeg.py,或者你自己的脚本叫 mesh.py,Python 会优先导入当前目录下的同名文件,导致真正的包被遮蔽。这种问题有时候连 print(sys.modules) 都查不出来,但只要把本地脚本改名,世界立刻就安静了。

4.4 PyCharm 和 Anaconda 怎么配合使用

如果你是一个写代码重度用户,只用 Jupyter 肯定不够,PyCharm 这种 IDE 在调试大型项目时有不可替代的优势。PyCharm 配置 Anaconda 本质上就是告诉 PyCharm:你帮我找哪个 Python 解释器来跑代码。

打开 PyCharm,File -> Settings -> Project -> Python Interpreter,点击齿轮图标,选 Add Interpreter -> Conda Environment。Us existing environment 里会列出你所有 conda 环境,选择对应的就行。PyCharm 会自动识别 conda 安装位置。

如果你在 conda 环境里已经装好了很多包,PyCharm 选到那个环境后会自动读取这些包,代码里 import 的智能提示也能正常工作。PyCharm 还支持直接打开 .ipynb 文件编辑,底层其实就是调用 Jupyter 的内核执行,所以你把 Jupyter 环境配好之后,PyCharm 里跑 Notebook 也是统一走同一套解释器,不会出现两边环境不一样的情况。

经验之谈:PyCharm 里配置解释器不是一次性的事。每次新建 conda 环境后,记得回到 PyCharm 里把 Project Interpreter 切到新环境,或者用右下角解释器选择器快速切换。否则你会出现“明明 conda 里装好了包,PyCharm 里却无法 import”的诡异问题。

5. 高频问题排查与避坑指南

环境类工具的特点就是:装的时候千篇一律,用的时候千奇百怪。我自己这几年处理过的 Jupyter 和 Anaconda 问题少说也有几十种。下面这几个是搜索热词里反复出现、也是实际工作中最常碰到的高频故障,我把排查思路和解决方案都整理成速查表,方便你直接对照操作。

5.1 Jupyter Notebook 打不开、启动后浏览器链接失效

这种情况分两类。第一类:命令行输入 jupyter notebook 后浏览器没有自动弹出。最简单粗暴的解决方法是,终端输出里会有一行 URL(形如 http://localhost:8888/?token=xxxxxx),手动复制这串地址粘贴到浏览器地址栏访问。有时候浏览器默认设置阻止了自动打开,或者本地默认浏览器版本过旧无法渲染。

第二类:启动后浏览器能打开页面,但刷新一下就显示“无法连接”或 404。多半是后台服务已经挂了。回到终端窗口看有没有输出报错,如果整个窗口被关闭或者 Ctrl + C 中断,服务就停了。如果服务没停但 404,可能是端口被占用或者 token 过期。把终端里的 URL 完整复制一遍再试。

不得已在 8888 端口被占用的情况下,你可以指定一个新端口:

jupyter notebook --port=9999

优先检查防火墙和代理设置。公司网络环境下,系统全局代理有时会拦截 localhost 请求,Jupyter 浏览器访问就会出现“连接被拒绝”。关闭浏览器代理或把 localhost 加入代理排除列表通常能解决。

5.2 单元格执行代码没有任何反应

热词里有一条“jupyter notebook 单元格执行代码没有任何反应”,配合的问题通常还有单元格变成In [*]状态,但一直运行不完,甚至卡住。

本质原因是后端内核被阻塞或者已经崩溃。常见的阻塞原因有三个:程序进入了死循环、执行了一个长期运行的网络请求、内核进程被系统挂起。

解决方法分层次来。先尝试工具栏上的“Restart Kernel”(或 0 0 快捷键),强制清空所有运行时状态重新来。如果重启后问题依然,看终端窗口有没有 Traceback 报错。如果终端里也没有错误,大概率是内核进程本身处于僵尸状态,此时最彻底的做法是关闭 Notebook 页面,在终端里按 Ctrl + C 两次杀掉服务,然后重新启动。

有些时候你会发现“任何单元格都没反应”,包括 print('test') 这种简单语句。这种情况优先怀疑内核和 ipykernel 版本不兼容,更新一下:

conda update -n base conda pip install --upgrade ipykernel

然后重启 Jupyter 服务。如果还不行,去 4.2 节重新注册一下内核,很少会败在这轮排查下。

5.3 Windows 动态链接库报错:DLL load failed while importing rpds

这是个在 Windows 上出现频率极高的报错,完整提示是:

ImportError: DLL load failed while importing rpds: 找不到指定的模块。

rpds 是一个会作为底层依赖被自动安装的 Python 包(很多工具链都会依赖它,比如 jsonschema)。它在 Windows 上加载失败,通常是微软运行库缺失、Python 版本不兼容、或者包安装不完整三种原因。

我用过的排查流程如下。先确认微软运行库。Windows 上很多编译后的 C 扩展需要 Visual C++ Redistributable 运行库,你可以去微软官方下载并安装最新的 VC_redist.x64.exe(这是官方合法的系统组件)。装完重启系统,多数 DLL 缺失问题会迎刃而解。

如果还不行,就用 pip 强制重装 rpds:

pip uninstall rpds pip install rpds

如果当前 Python 版本过旧(比如 3.7、3.8),部分新版 rpds 的 wheel 包可能不支持,需要升级 Python 或者降级 rpds 到一个旧版。使用 conda 装 rpds 也是一个稳定性更高的选择,conda 会尽量从预编译渠道选兼容版本,不容易出 DLL 问题。

5.4 conda 命令找不到、环境变量配置错乱

这个在热词里也叫“anaconda 环境变量配置”“anaconda prompt 打不开”。症状是你打开 CMD(不是 Anaconda Prompt),敲 conda,提示“conda 不是内部或外部命令”。

出现这个问题的本质原因是 CMD 里找不到 conda.exe 的路径,而 conda.exe 所在目录没有被加入到 PATH 环境变量里。

解决办法:如果你不介意用基础命令,可以直接打开 Anaconda Prompt,在 Anaconda Prompt 里使用 conda init 进行初始化。如果你一定想在 CMD 里直接用 conda,那你需要手动添加环境变量:右键“此电脑”-> 属性 -> 高级系统设置 -> 环境变量 -> 在用户 PATH 变量里追加 Anaconda 的主目录(比如 C:\Users\用户名\anaconda3),以及 Scripts 子目录、Library/bin 子目录,然后重新打开 CMD。

需要注意,手动加 PATH 会像上面“踩坑”环节说的那样,可能导致系统全局 Python 被劫持。所以我想强调一句实话:日常用 Anaconda,你没有必要非在 CMD 里敲 conda 不可。Anaconda Prompt 就是为你准备的、配置好一切的专用终端。

如果你在 Ubuntu 上敲 conda 也是 command not found,那多半是 conda init 写的初始化脚本没有被 source。执行source ~/.bashrc或者重新登录会话。如果依然不行,手动把 Anaconda 路径 export 进 PATH 也行,但最好是先跑一次 conda init。

5.5 Anaconda 卸载重装的正确姿势

到了这个环节,说明前面的问题已经把你折腾到宁愿推倒重来的程度了。没关系,我经历过无数次。

Windows 下卸载 Anaconda 的正确做法是:用系统自带的“添加或删除程序”卸载,别手动删文件夹。但仅仅这样还不够干净。卸载完成后,还需要手动清理三处残留:

  • 安装目录(比如 C:\Users\用户名\anaconda3)如果没被删干净,手动删。
  • 用户目录下的 .conda 文件夹(C:\Users\用户名.conda)和 .jupyter 文件夹,这是各种包、内核配置和环境的存放位置。
  • 用户环境变量里跟 Anaconda 有关的条目,以及 PATH 里指向 Anaconda 的路径。

清理完成后重启电脑,再重新安装。如果你之前装了太多虚拟环境,卸载前建议先导出环境清单,方便重装后恢复:

conda env list conda env export -n myenv > myenv.yaml

重装完成后再用:

conda env create -f myenv.yaml

可以还原环境。这一步在大型项目迁移时尤其好用。

下表是几个高频问题的速查对照,你可以先收藏或者截图,方便以后直接翻:

问题现象可能原因优先解决动作
浏览器打不开 Jupyter 页面服务未启动 / 端口占用 / 代理拦截复制终端 URL 手动访问,换端口,关闭代理
单元格执行无反应内核卡死 / ipykernel 版本不匹配Restart Kernel,更新 ipykernel,重启服务
DLL load failed while importing rpds微软运行库缺失 / 包不完整安装 VC_redist,pip 重装 rpds
conda 命令找不到PATH 未配置用 Anaconda Prompt 执行 conda init
新环境里 import 报错环境与内核未绑定pip install ipykernel + python -m ipykernel install
卸载重装后包全部缺失虚拟环境残留没清理或未导出卸载后清理 .conda / .jupyter,先导出 env yaml

5.6 隐藏很深的坑:conda 源调整与升级注意事项

我给新手还有一个建议:装完 Anaconda 后,第一时间把 conda 的下载源切换成国内镜像,能大幅度减少后面装包的等待时间和超时报错。清华镜像源的对应用法很简单:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes

这种配置只是让 conda 从清华大学镜像服务器获取包,是完全合规、官方教程里也允许的做法。配置完成后,你可以做一个简单验证:

conda install numpy

如果下载速度明显加快,说明镜像源配置成功。

升级 conda 本身采用:

conda update conda

但我必须提醒一个很容易被忽略的坑:Anaconda 自带的基础包数量多、版本依赖复杂,如果你贸然执行:

conda update --all

可能会直接把一整套兼容依赖升级得“支离破碎”,导致某个包新版和另一个包不兼容,然后 Jupyter 打不开,或者其他工具报错。我自己从来不建议在新安装的 Anaconda 上盲选“全部升级”。真正的做法是“哪个项目需要哪个版本,就在对应虚拟环境里按需升级”。base 环境保持干净简单,能让你的环境管理事半功倍。

如果升级 Jupyter 相关包:

conda update jupyter

升级前也先确认自己的项目脚本是否需要新版特性,不需要的话保持稳定版本更省心。

6. 写在最后:环境管理这件事,值得花时间搞明白

我见过太多人卡在环境安装和配置上,一卡就是一下午甚至一整天,最后归因于“我这电脑有毒”或者“新版本兼容性太差”。但实际上,绝大部分这类问题背后都有一个明确的原因和一套成熟的解法,只是碎片化的信息把它们打散了,让人无从下手。

从 Anaconda 的下载、安装、环境变量配置,到 Jupyter Notebook 的启动、调教、内核绑定,再到 PyCharm 联动和疑难杂症排查,这些不是几段零散的命令拼凑,而是一套环境管理的底层思维。你想用 Python 做数据分析也好,做深度学习也好,写自动化脚本也好,只要你能把这套思维理清楚,后面无论换新电脑、给同事搭环境、还是部署到服务器,都会顺很多。

我自己实际操作下来的体会是:环境管理没有捷径,但也没有想象的那么难。只要养成三个好习惯,你已经比大多数人强了:一是每个项目都新建独立的 conda 虚拟环境,不要全塞在 base 里;二是重要项目导出 environment yaml 备份,出问题随时还原;三是但凡遇到莫名其妙的报错,先检查当前代码到底跑在哪个 Python 环境里,再检查包版本和文件命名,最后才考虑重装。这三招能帮你排除掉八成以上的常见故障。

最后再分享一个小技巧,这是我折腾久了才总结出来的。每次给新电脑或新服务器配好 Anaconda 环境之后,我会顺手把下面三样东西固定下来:一套写好的 kernelspec 注册脚本,一份记录了所有常用 conda 环境的 yaml 导出文件,还有一个写明了所有项目目录映射的 notes 文档。这样哪怕硬盘报废、电脑重装,我也可以在两个小时以内重建我的全部开发环境。这件事验证了一句话——你的开发效率有多高,一半取决于你对环境的掌控力有多强。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 5:30:21

Agent五层架构落地实操:MCP、A2A与LangGraph工程指南

1. 这不是一张“技术海报”&#xff0c;而是一份Agent产业落地的实操地图如果你最近翻过技术社区、刷过招聘JD、或者参加过几场AI方向的闭门会&#xff0c;大概率已经反复看到这几个词&#xff1a;Agent、MCP、A2A、LangGraph。它们不再只是论文里的概念或Demo中的炫技模块&…

作者头像 李华
网站建设 2026/9/17 5:29:43

Vue3+Node.js构建高性能宠物电商系统实战

1. 项目背景与核心价值作为一名长期从事电商系统开发的全栈工程师&#xff0c;我注意到近年来宠物经济呈现爆发式增长。根据行业调研数据&#xff0c;2022年中国宠物市场规模已突破3000亿元&#xff0c;其中线上宠物用品消费占比超过40%。这个基于Vue的线上宠物商品购物系统正是…

作者头像 李华
网站建设 2026/9/17 5:29:26

一人工作室微信小游戏开发实战:Vibe Coding+原生框架闭环指南

1. 项目概述&#xff1a;为什么一个“一人工作室”能靠微信小游戏跑通从0到1的闭环&#xff1f;“Vibe Gaming 一人工作室微信小游戏开发实战”这个标题里藏着三个关键信号&#xff1a;轻量启动、平台限定、真实交付。它不是“用AI生成100个游戏创意”的概念演示&#xff0c;也…

作者头像 李华
网站建设 2026/9/17 5:29:23

iFly固定翼低空遥感方案:航线规划与相机触发参数设置详解

简介&#xff1a;面向低空经济与无人机测绘应用场景的固定翼低空遥感平台系统应用推荐方案&#xff0c;聚焦iFly U3、U5两款电动固定翼无人机在低空遥感中的工程化落地。方案从项目背景、目的与意义入手&#xff0c;详细介绍了U3的轻便高效、腹部开伞设计以及U5全碳纤维机身、厘…

作者头像 李华