ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Anaconda+Jupyter Notebook:零基础Python环境配置与问题排查指南

Anaconda+Jupyter Notebook:零基础Python环境配置与问题排查指南 1. 为什么Python入门套装首选Anaconda加Jupyter Notebook很多零基础的朋友第一次接触Python大概率会卡在同一个地方打开Python官网下载了安装包装完发现是个黑乎乎的交互窗口输个print(hello)能出结果但稍微写几行代码就觉得别扭想保存成文件又不知道怎么弄更别提装第三方库了——打开网页看到pip install xxx在命令行里一试全是红色报错。于是不少人第一节课还没上完就放弃了不是Python难而是环境没搭好。Anaconda加Jupyter Notebook这套组合就是专门解决这个痛点的。Anaconda是一个Python发行版官方说法是“面向数据科学的发行版”说人话就是它把Python解释器、常用的科学计算库NumPy、Pandas、Matplotlib这些以及包管理工具conda打包在一起一次装完省去新手逐个配置的麻烦。Jupyter Notebook则是跑在浏览器里的交互式编程环境你可以在网页上写代码、立刻看到结果还能写笔记、做图表非常适合入门学习和做数据分析实验。这篇内容就是完整走一遍安装和使用流程包括我在实际安装中遇到的坑——比如某些选项勾不勾直接影响后面能不能省心。适合完全零基础的人也适合之前自己装过Python但总觉得环境乱糟糟、想推倒重来的朋友。顺带说一句网上搜“Anaconda安装”出来的教程非常多但很多停留在“下一步下一步”的层面没讲清楚每个选项是什么意思出了问题也不知道怎么排查。这篇文章不光是步骤还会把背后的逻辑讲明白——理解这些逻辑比照抄命令重要得多。2. Anaconda下载与安装建议直接选国内镜像省得折腾2.1 下载之前先想清楚装哪个版本Anaconda的下载页面提供两个大版本一个是最新版的Python 3.x安装包另一个是旧版的Python 2.x现在已经停止维护了除非你有特殊需求不要碰。在Python 3的安装包里面还会根据操作系统区分Windows、macOS、Linux。不过这里有个容易忽略的点2020年之后Anaconda官方调整了镜像策略直接从官网下载速度很不稳定经常看到进度条卡在3%然后整个下载失败。所以我的建议是不要死磕官网直接用国内高校的镜像站下载。清华大学的TUNA开源软件镜像站是很多人用的地址是 mirrors.tuna.tsinghua.edu.cn我记不清具体URL的时候一般直接搜“清华镜像 anaconda”。打开之后找到Anaconda的安装包目录选对应系统的版本下载。提示下载安装包时注意看文件名里的版本号一般来说选择最新稳定版就行不必追求个别教程里的旧版本。新版对新手反而更友好界面和默认配置都更完善。2.2 Windows安装过程中的关键选项下载完会得到一个exe文件双击运行。网上很多教程说“一路Next就行”这话对也不对——确实大部分步骤直接Next没问题但有几步需要认真处理。先看第一步Install for Just Me 还是 All Users。我推荐选Just Me也就是当前用户安装。选All Users需要管理员权限安装时写入C盘系统目录后续权限出问题会多一点。当然如果你电脑只有一个用户这俩差别不大。然后是安装路径。默认路径是C盘下的C:\Users\你的用户名\anaconda3路径里没有中文和空格这是最好的状态。如果你非要换到D盘也务必保证路径全英文字符不要出现D:\软件\Anaconda这种——后面创建虚拟环境、装包的时候路径里的中文经常莫名其妙引发编码错误排查起来很耽误时间。最关键的一步是 Advanced Installation Options 页面里面有两个复选框Add Anaconda3 to my PATH environment variable推荐不勾选Register Anaconda3 as my default Python 3.9推荐勾选网上对这两项的争议很大我个人的建议是PATH那一项不勾默认Python那一项勾上。为什么PATH不勾勾选了这个选项Anaconda会把自己的路径写进系统环境变量好处是任何新打开的命令行窗口里都能直接敲conda、jupyter这些命令省事。但坏处是如果电脑上之前装过其他Python或者后续你还要装CH340驱动这类会改动PATH的软件Anaconda的Python会被当成默认Python参与各种系统脚本引起版本冲突。处理环境变量的问题很磨人初学者可能因此劝退。不勾选PATH的话日常使用通过Anaconda自带的“Anaconda Prompt”进入命令行再输入jupyter notebook同样能正常启动。这是我实操下来最稳妥的组合。2.3 安装完成后的验证安装结束后开始菜单里会出现Anaconda文件夹里面的几个程序也不需要全弄明白用得最多的是Anaconda Prompt和Jupyter Notebook后面会说到。先打开Anaconda Prompt——注意不是普通的cmd然后在命令行输入conda --version如果返回类似conda 24.x.x的输出说明conda装好了。再输入python --version能看到Python的版本号就正常。如果提示“python不是内部或外部命令”别慌多半是PATH没配置直接用Anaconda Prompt执行就行Anaconda Prompt会自动加载Anaconda的环境路径。提示验证环节不要跳过。很多人装完直接点Jupyter Notebook打不开才回来排查绕了一个大圈子。2.4 macOS和Linux用户的注意事项macOS用户下载的是pkg安装包安装过程比Windows还简单基本就是一路继续。但有个细节macOS X版本较新比如M1芯片的话下载页面会自动推荐适配Apple Silicon的安装包别下错了。Intel芯片的Mac就选x86_64版本。Linux用户一般用命令行安装下载的是一个.sh脚本执行bash Anaconda3-XXXX-Linux-x86_64.sh过程中会问是否更新bashrc选yes。装完之后记得关掉终端重新打开或者执行source ~/.bashrc否则conda命令同样找不到。3. conda到底是什么环境、包、路径这三个概念一定要搞清3.1 环境隔离的意义很多初学者把Anaconda看作一个“大号Python安装包”这没毛病但他们往往忽略了conda最强大的能力——环境管理。举个例子你正在用Python 3.11做Web开发Django版本是4.x。过几天你跟着教程学数据分析教程要求Python 3.9和某个特定版本的TensorFlow。如果只有一个全局环境你要么升级这个降级那个要么忍受一堆依赖冲突折腾半天最后心灰意冷。conda的虚拟环境就是为这个场景设计的。每个环境是一个独立的Python沙盒有自己的解释器版本和第三方库集合互不干扰。在不同项目之间切换到不同环境就像在家穿拖鞋上班穿皮鞋一样自然。命令也很简单几个核心命令# 创建环境指定Python版本 conda create -n myenv python3.9 # 激活环境Windows/Linux/macOS通用 conda activate myenv # 查看当前所有环境 conda env list # 退出当前环境 conda deactivate # 删除环境 conda remove -n myenv --all新手通常只用base环境就够了但养成“为项目创建独立环境”的习惯后期会感激现在的自己。我就是早期入坑时没这个概念所有包一股脑往base里装最后base环境扩容到几十个G随便装个新库都可能跟旧库冲突只能整个卸载重装。这种痛踩过一次就会改。3.2 conda和pip的分工稍微进阶一点就到了conda和pip的对比。conda不仅是包管理器还能管理Python版本和底层依赖库比如带C库的包而pip是Python生态里的通用包管理工具几乎什么包都能装。听起来两者功能重叠实际用起来我的习惯是优先用conda install装包因为conda会检查依赖兼容性自动解决版本冲突conda没有的包比如PyPI上独有或者刚发布的新库再用pip install一个常见的坑在混用上。如果同一个环境里有些包是conda装的有些是pip装的将来出了问题排查起来会比较头疼。尽量一个环境内固定一种方式或者至少按项目划分清楚不然特容易遇见“版本够了却报导入错误”的灵异事件。另外pip install装包时如果你当前激活了虚拟环境它默认装进这个环境如果没激活虚拟环境它会装到base环境。好多人搞不清楚自己装哪儿了就是因为这个细节。3.3 Anaconda、conda、Python三者的关系再理顺一层Anaconda是发行套件conda是Anaconda默认自带的包/环境管理工具Python是conda管理的一种解释器。换句话说Anaconda打包了conda和一套Python而conda又有能力创建不同版本的Python环境。明确这个关系后后续看到“conda更换国内源”“conda配置环境变量”等操作就不会发怵了。4. 启动Jupyter Notebook后的第一次实操单元格就是你的草稿纸4.1 两种启动方式推荐先从菜单点Windows用户最简单的方式是直接在开始菜单的Anaconda文件夹里点击“Jupyter Notebook”图标。它会先弹出命令行窗口自动启动本地服务然后在默认浏览器里打开 http://localhost:8888 的界面。还有一种方式是在Anaconda Prompt里手动输入jupyter notebook这两种方式本质没有区别但手动方式能让你看清服务日志——比如端口被占用、内核启动失败这些报错都会显示在命令行窗口里方便排查。从图标启动时命令行一闪而过反而看不到关键信息。所以我建议第一次用老老实实打开Anaconda Prompt输入jupyter notebook回车看着它启动。命令行窗口不要关关了浏览器里的Notebook也会断开。4.2 认识浏览器里的文件管理界面Jupyter启动后进入的是文件管理页面File Browser类似于Windows的资源管理器默认显示的是你当前用户目录。右上角有一个“New”按钮点击下拉菜单选择“Python 3 (ipykernel)”就会新建并进入一个Notebook。Notebook的后缀是.ipynb用JSON格式存储里面包含代码、输出结果、Markdown笔记等多种内容。它不是传统意义上的脚本文件更像一张“交互式实验记录纸”。4.3 单元格机制是核心进入Notebook页面你会看到一个白色输入框这就是一个单元格Cell。Jupyter的一切操作都围绕单元格展开你可以写代码也可以写Markdown内容通过快捷键切换类型。单元格顶部工具栏中间有一个下拉框默认是“Code”。把它切换成“Markdown”输入几个井号# 这是我的第一个Notebook然后按Shift Enter单元格会渲染成标题格式同时自动创建一个新单元格。这个操作背后的机制是Shift加Enter表示“执行当前单元格并跳转到下一个”这是Notebook最核心的使用逻辑。对于代码单元格也一样在一个单元格里敲print(hello jupyter)按ShiftEnter单元格下方立即显示输出结果。这种即写即所得的方式特别适合学习阶段不断试错——写一行、执行一行、观察结果随时调整。常用的单元格操作我整理了一下操作快捷键/方式说明执行当前单元格并移动到下一格Shift Enter最常用执行当前单元格且不移动Ctrl Enter适合反复调试插入单元格上方Esc 然后按 A光标在输入状态时按Esc退出编辑模式插入单元格下方Esc 然后按 B同上删除单元格Esc 然后连按两次 D同上切换Markdown/CodeEsc 然后按 M / YM切换为MarkdownY切换为Code保存Ctrl S也支持自动保存单元格执行时左侧 In 后面的数字会加1比如第一个单元格执行完显示In [1]第二个显示In [2]。输出结果则显示在单元格下方Out[n]对应你的执行序号。这个编号机制非常直观也是Notebook区别于普通IDE交互方式的核心。4.4 写一个能跑通的入门示例光说不练等于零。新建Notebook后在第一个单元格里输入import numpy as np import matplotlib.pyplot as plt x np.linspace(0, 2 * np.pi, 100) y np.sin(x) plt.plot(x, y) plt.title(sin curve) plt.show()按ShiftEnter执行。Anaconda预装的项目到这一步基础环境已经不需要再装库直接就应该看到一个正弦曲线图出现在单元格下方。如果你用了Anaconda自带的全套环境中注意版本可能稍旧这仍然是本命令。看到图的那一刻很多人会自己“哇”一声——不需要配置任何环境几行代码直接出图这就是AnacondaJupyter对新手最大的价值把从“写代码”到“看到可视化结果”的链路缩到最短。4.5 保存与分享ipynb文件怎么管Notebook会自动保存默认间隔是120秒也可以手动CtrlS。保存的文件在你启动Jupyter时所在的目录下文件名在页面上方显示点击即可重命名。保存后的ipynb文件可以直接用Jupyter重新打开别人也可以双击打开前提是装了Jupyter。如果你想分享给朋友看对方没装环境的话可以“File — Download as — HTML”导出成网页方便阅读但不方便执行。更常用的是导出成py文件拿走当普通脚本用。5. 新手最常碰到的几个问题排查从单元格没反应到dll加载失败5.1 单元格执行没有任何反应先查内核状态热搜词里有一条“jupyter notebook单元格执行代码没有任何反应”这是出现概率最高的问题。症状很明显光标停在代码块里按ShiftEnter右侧In后面的星号一直转或者干脆空白就是不输出结果。绝大多数情况是内核Kernel断开或卡死了。Notebook执行代码时实际上是浏览器把代码发给本地的IPython内核进程去跑内核崩溃或连接断了代码就没有任何反馈。排查链路我建议按这个顺序走看菜单栏的“Kernel”选项如果显示“Reconnect”或者图标是灰色说明内核掉线了点击Kernel—Restart Kernel重启内核。重启内核后再次执行如果还是没反应大概率是代码本身进入了死循环或极端耗时。比如while True: pass这种内核在拼命算但界面没反馈。这时候用工具栏的“Stop”按钮方框图标中断执行。还不行看看启动Jupyter的那个命令行窗口里面有没有红色的报错堆栈。常见的报错比如端口被占用会直接显示在那里。提示死循环这种事新手在同时学循环语句时最容易触雷我也没能幸免。遇到单元格卡住先想到Stop按钮而不是暴力关浏览器——直接关浏览器的话内核进程还是残留的下次启动Jupyter可能提示端口8888占用。5.2 Importerror: dll load failed while importing rpds这条报错在热搜里出现得很具体“运行jupyter notebook出现importerror: dll load failed while importing rpds”这也是一个很典型的依赖库损坏问题经常出现在conda和pip混用、或者环境升级之后。rpds 是referencing库的一个底层依赖而referencing又被 jsonschema 依赖jsonschema 被 Jupyter 相关组件使用。链条很长但问题本质就一句话某个底层库的DLL文件缺失或版本不匹配导入时Windows加载不了。我的处理办法是# 重新安装rpds这个包 pip uninstall rpds-py pip install rpds-py或者用conda重新装一遍依赖conda install rpds-py --force-reinstall装完重启Jupyter一般就好了。如果重装之后还有类似dll load failed的报错但包名不同那就按同样的思路处理对应包名即可。归根结底这类问题多半不是你的代码问题而是环境配置被弄乱了。5.3 浏览器打开Jupyter显示404或者空白启动Jupyter后浏览器自动打开结果显示404 Not Found或者连接被拒绝。很多人以为Jupyter坏了其实通常是浏览器指定的地址不对。Jupyter启动时命令行窗口会打印一行类似http://localhost:8888/tree?tokenxxxxxxxx里面的token是登录凭证浏览器有时会丢失这个token导致访问被拒绝。遇到这种情况复制命令行里显示的完整URL粘贴到浏览器地址栏手动访问。还有一种情况是端口被占用Jupyter自动切到了8889端口但浏览器访问的还是8888。此时看命令行窗口它会明确提示Jupyter Notebook is running at: http://localhost:8889/...跟着提示走就行。5.4 想要修改Notebook默认打开目录经常有人问每次打开Jupyter都停在我的用户目录能不能固定到我放代码的文件夹可以但需要在启动配置文件里修改。打开Anaconda Prompt执行jupyter notebook --generate-config这条命令会在你用户目录下的.jupyter文件夹生成一个jupyter_notebook_config.py配置文件用文本编辑器打开找到这一行# c.NotebookApp.notebook_dir 把注释符号去掉把单引号里填上你的目标路径比如c.NotebookApp.notebook_dir D:/MyCode/PythonProjects注意这里路径分隔符要用正斜杠/或者双反斜杠\\Windows默认的反斜杠单写会触发转义问题。修改保存后重启Jupyter默认目录就变了。5.5 装了新包却在Notebook里import不到这种问题也很普遍在Anaconda Prompt里pip install requests成功然后去Jupyter里import requests却说ModuleNotFoundError。原因几乎总是“装包的环境”和“Jupyter使用的环境”不是同一个。如果你没有激活虚拟环境就在base里pip install而Jupyter的内核启动时却指向了一个conda环境或者Jupyter是在普通cmd里启动的二者不是同一个Python解释器自然找不到这个包。排查办法在Notebook里执行import sys print(sys.executable)这会输出Jupyter当前使用的Python解释器路径。再用命令看你的包装到了哪个Python路径下两相对比就知道谁不对了。最常见的解决方案是保证从Anaconda Prompt启动Jupyter并确认激活了正确的环境后再装包。6. 从Notebook走向完整项目几个习惯和进阶思路6.1 养成环境隔离和依赖记录的习惯Anaconda加Jupyter这套环境好上手但长期用下去如果不注意管理新坑会不断冒出来。我强烈建议从第一天就养两个习惯第一按项目创建虚拟环境哪怕现在只是练手。练手项目通常装依赖很随意过两个月翻出来看已经想不起当初是怎么跑通的了。有虚拟环境以后在这个项目里怎么装包都没关系环境坏了重建一个也就几分钟的事。第二项目里保存一个requirements.txt。生成方式很简单pip freeze requirements.txt以后换电脑或者别人想复现你的环境执行pip install -r requirements.txt就能装回相同依赖。如果项目主用conda还可以导出完整环境描述文件conda env export environment.yml6.2 Notebook不是脚本替代品学会分工Jupyter Notebook适合探索、实验、展示但它不适合写正式的可复用代码模块。写了三个月Notebook之后你会发现代码一多单元格之间跳来跳去非常乱这时候就该把逻辑封装成.py文件用函数和类组织Notebook只负责调用和展示结果。常见的结构是项目里建一个src文件夹放.py模块Notebook放在顶层当实验记录和报告展示用。Notebook里通过from src.my_module import my_function调用自己写的函数两边互不干扰。6.3 扩展插件让你的Notebook更好用Jupyter有一个官方扩展系统最常用的是jupyter_contrib_nbextensions装上之后可以提供表格格式化、代码折叠、自动补全等功能体验向IDE靠拢不少。安装方式pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user装完后在Jupyter首页会出现Nbextensions标签页自己勾选需要的扩展。也有一些人在编辑器中配置nvim相关环境来获得更好的输入体验这是一个典型的进一步优化方向。入门阶段不建议一上来就折腾这些先把核心流程跑顺扩展是锦上添花的事。6.4 数据科学之外这套环境还能做什么很多人以为Anaconda和Jupyter只能跑数据分析或机器学习其实不是。日常写爬虫、处理Excel表格、做自动化和办公脚本Jupyter的交互方式都很好用。尤其是在处理Excel时数据的中间计算过程每一步都看得见摸得着比在IDE里反复print方便得多。我自己经常用Jupyter处理一些每周重复的报表任务——读取数据、清洗、分组统计、出图最后再把结论写成一个Markdown笔记存档。一条龙下来过程可回溯结果可展示每次复盘只需要重新打开文件跑一遍就行。说到最后我个人在带新人入坑Python这件事上最深的体会是工具链的选择会影响前期学习的动力曲线。Anaconda加Jupyter Notebook的即时反馈机制能让你在半小时内写出第一个出图程序这种正反馈对新手极其宝贵。先把环境问题解决妥当再把每一步操作理解到位Python这条路的起点就算扎实了。
返回列表