ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python入门首选:Anaconda+Jupyter环境搭建与实用指南

Python入门首选:Anaconda+Jupyter环境搭建与实用指南 很多刚开始学Python的朋友最容易卡住的往往不是语法本身而是第一步——环境搭建。网上教程东一句西一句今天让你装Python明天让你配编辑器后天又冒出个Anaconda还没开始写代码就先被工具折腾得想放弃。这篇文章我直接给你一条最省心的路子用Anaconda管理Python环境用Jupyter Notebook写代码跑代码。这两个工具搭配起来对新手极度友好也是我用了这么多年下来觉得最稳的组合。这篇内容会从下载安装讲到日常使用再到常见坑的排查尽量把你能遇到的问题都提前摆出来。1. 为什么入门Python首选Anaconda而非裸装Python1.1 裸装Python和Anaconda的差别到底在哪很多教程会让你先去python.org下载Python然后装完再用pip一个个装第三方库。这种做法不是不行但对新手来说有几个很现实的问题装完Python之后你还需要额外装pip、装setuptools然后要装任何库都得自己敲命令库之间版本冲突了也得自己处理搞不好就把系统环境弄乱了。Anaconda本质上是一个Python发行版它把Python解释器、包管理器conda、几百个常用科学计算库NumPy、Pandas、Matplotlib这些一次性打包好。装完Anaconda就等于你拥有了一个开箱即用的Python环境省掉了99%的基础配置时间。而且conda这个包管理器比pip更强大它不只管Python库连Python解释器版本本身都能切换还能创建完全隔离的虚拟环境想怎么折腾就怎么折腾装坏了删掉重建就是。1.2 Anaconda解决的是什么级别的痛点举一个我当年真实踩过的例子有个项目需要TensorFlow 1.x另一个项目需要TensorFlow 2.x这俩库对Python版本和依赖库的要求完全不同。如果用裸Python你装了这个就得卸那个来回折腾。用Anaconda的话直接创建两个独立环境一个装tf1一个装tf2各玩各的互不干扰。这个环境隔离能力对于新手来说可能一时感受不到但等你写代码超过三个月一定会感谢这个功能。再一个就是Anaconda预装的库覆盖了数据分析、机器学习、科学计算的主流工具链对于Python入门的绝大多数场景——处理Excel数据、画个折线图、跑个简单算法——都不需要再去命令行手动安装任何东西。1.3 什么情况下才建议不装AnacondaAnaconda也不是银弹。它体积比较大安装完要占好几个G的空间启动速度也比裸Python慢一些。如果你的目标是做Web开发Django、Flask、写爬虫脚本、或者只是跑一些极轻量的小工具那直接装官方Python加pip就够用了。但如果你是冲着数据分析、机器学习、人工智能这些方向去的或者你是学生、刚转行、刚开始学编程那毫无疑问Anaconda就是最优解没有之一。2. Anaconda的下载与安装全流程2.1 下载之前先确认两件事第一件事是版本选型。Anaconda官网下载页面默认提供的是最新版本但我不建议你盲目追新。我的习惯是选稳定版什么是最新就等一等让社区把坑踩得差不多了再上。目前从官网下载的话会看到Python 3.x系列的版本3.9、3.10、3.11都行选官方推荐的就行。如果你电脑配置一般不想装那么重的GUI工具可以考虑Miniconda——它只包含conda和Python其他库需要自己安装。新手我还是推荐完整版Anaconda省心。第二件事是下载渠道。Anaconda官网在国内访问速度可能比较慢大家基本都会用清华大学的开源软件镜像站mirrors.tuna.tsinghua.edu.cn/anaconda/archive/来下载速度快很多而且是官方原包安全可靠。这里有个小提醒下载的时候别贪多装一个64位的Windows版本或者对应系统的安装包就够用了不要看哪个都有就下好几个。2.2 Windows安装演示与关键选项详解Windows下的安装大概是所有系统里最简单的双击exe文件一路往下点就行但有几个选项非常关键我重点说一下。第一个关键点安装路径。默认是装在C盘用户目录下我建议你改到D盘或其他非系统盘路径中千万不要出现中文字符和空格。Anaconda对路径有特殊要求路径里有中文很容易导致后面某些库无法正常工作到时候排查起来非常痛苦。第二个关键点Add Anaconda to my PATH环境变量。这一项在新版安装器里默认是不勾选的。如果勾选了安装完成后可以在任意终端直接使用conda和python命令但副作用是可能和你原本装的Python产生冲突。如果不勾选则需要通过Anaconda PromptAnaconda自带终端来使用。我的建议是如果你电脑上之前没装过Python那勾上省心如果之前装过先不勾用Anaconda Prompt等以后熟悉了再手动配环境变量也行。第三个关键点Make Anaconda the default Python。如果勾选系统默认Python就指向Anaconda了。这个保持默认就行一般不用改。2.3 macOS和Linux下的安装要点macOS用户有两个选择图形界面的pkg安装包或者命令行方式的sh脚本。我用的是sh脚本方式因为可控性更强。下载到.sh文件后在终端执行bash Anaconda3-xxx-MacOSX-x86_64.sh然后一路yes最后它会问你是不是要运行conda init来初始化shell这个建议选yes否则之后要用conda还得自己source路径。Linux的安装方式一模一样只是安装包后缀不同。装完记得重新打开终端输入conda --version验证是否生效。2.4 安装完成后的第一遍自检装完之后别急着打开Notebook先做三个检查conda --version python --version jupyter --version这三条命令如果都能正常输出版本号说明安装成功了。如果conda提示找不到命令大概率是环境变量没配上回到前面说的安装选项重新检查一遍。如果python版本显示的不是Anaconda的而是系统自带的说明PATH环境变量顺序有问题这时候要确认Anaconda的路径是否在系统路径的最前面。3. 装完Anaconda后必会的conda操作3.1 环境管理这是conda最值钱的功能很多新手装完Anaconda就直接开始写代码了完全不知道conda还有环境管理这回事。其实这才是Anaconda的核心优势所在。你完全可以做到不同项目用不同环境环境之间完全不干扰这就相当于给每个项目开了一个独立的沙盒。几个最核心的命令我列一下# 创建一个名为myenv的虚拟环境指定Python版本 conda create -n myenv python3.9 # 查看所有环境 conda env list # 切换到某个环境 conda activate myenv # 退出当前环境 conda deactivate # 删除某个环境 conda remove -n myenv --all刚开始学Python的时候你可能会觉得单环境就够了但当你需要跑不同教程的代码时很快就会发现有的项目要Python 3.8有的要3.10有的库只支持某个特定版本。有了虚拟环境你再也不用担心这些冲突问题。我自己现在每个项目起手第一件事就是conda create -n 项目名 python3.9完成后进入环境再装依赖项目结束把环境一删干干净净。3.2 包管理的正确姿势conda和pip怎么配合conda和pip是两套包管理系统很多新手会疑惑到底用哪个。简单来说能用conda装的库优先用conda装conda没有的库再用pip装。原因是conda装二进制包会帮你把依赖的底层库比如MKL加速库、底层C库一起处理了兼容性更稳。pip更通用Python生态绝大部分库都有但有时候会缺少底层动态库的支持。# 用conda安装 conda install numpy pandas matplotlib # 用pip安装conda没有的库 pip install requests flask这里有个关键建议在一个环境里尽量不要混着用conda和pip安装同一类库因为这两套包管理系统互不知道对方装了什么容易把依赖关系搞乱。我见过最坏的情况是环境直接崩掉只能重建。实际经验是先试着用conda装装不上再切pip一旦用conda装了核心的科学计算库后续就尽量用conda维护。3.3 国内源加速配置不改这个你会怀疑人生conda默认的官方下载源在国外在国内网络条件下慢得像蜗牛经常下载到一半就卡住。解决办法是换成清华的镜像源。我建议你装完Anaconda第一件事就做这个配置。执行以下命令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版本需要配置带free的channel有些教程里只加了main结果会报找不到包。另外如果你安装了新版Anaconda默认配置中已经集成了Anaconda官方源直接加上面的配置就会被覆盖成清华源速度飞起。3.4 环境的导出与复制换电脑救星当你把项目跑通了里面的环境也配置好了你想换到另一台电脑上继续开发难道要一个个重新装库吗不用。conda提供了环境导出功能# 导出当前环境所有包的列表 conda env export environment.yml # 换个电脑后根据列表恢复环境 conda env create -f environment.yml这是一个非常实用的功能把environment.yml文件放进项目代码库其他人clone项目后一条命令就能还原一模一样的环境配置。我自己在多个项目之间协作时几乎每次都靠这个文件保持环境统一再也不用每次手动敲几十条pip install命令了。4. Jupyter Notebook的使用核心技巧4.1 启动与界面认识Anaconda装好后Jupyter Notebook就自动装好了。启动方式有两种一种是在Anaconda Navigator图形界面里点击Launch另一种是在终端或Anaconda Prompt里直接输入jupyter notebook终端里输完命令默认浏览器会自动打开一个地址一般是http://localhost:8888。这里可以看到你的文件目录点进去就能新建Notebook。第一次用的人可能会疑惑这跟写代码有什么关系实际上Notebook文件.ipynb就是一个交互式Python文档你可以把代码、文字说明、图表放到同一个页面里既能写代码又能做笔记对学习特别友好。4.2 单元格操作让写代码像用Word一样自然Jupyter Notebook由一个个单元格组成每个单元格可以放代码也可以放Markdown文字。理解这一点就理解了Notebook的全部。新建Notebook后你会看见一个空白的代码单元格里面写着In [ ]:。在单元格里输入print(hello world)然后按ShiftEnter运行代码下方就会显示Out [1]: hello world同时光标自动跳到下一个单元格。如果你想去掉某个单元格的输出按Esc进入命令模式按O键来回切换输出。单元格类型也很重要。默认是Code代码如果想写一段说明文字按Esc后按M键就切换成了Markdown文本模式在里面可以写标题、加粗、列清单。再按Esc后按Y键又切回代码模式。这种文本和代码混排的方式对做学习笔记非常管用。4.3 快捷键效率翻倍的核心我见过不少用了很久Notebook的人还是全程鼠标点这速度实在太慢了。Jupyter的快捷键体系其实很简单掌握这几个就够用了ShiftEnter运行当前单元格并跳到下一个AltEnter运行当前单元格并在下方新建一个A在上方插入单元格B在下方插入单元格D D按两次D删除当前单元格M切换为Markdown模式Y切换为代码模式Tab代码补全ShiftTab显示函数帮助文档其中ShiftTab是我个人最爱用的功能当你对某个函数参数记不清时按住ShiftTab函数签名和说明就弹出来了相当于内置文档。新手学习阶段遇到不懂的函数先按ShiftTab查文档比去搜索引擎查更快也更准。4.4 魔法命令很多人不知道的隐藏神技魔法命令是Jupyter提供的以%开头的一类特殊命令它们不是Python语法但能在Notebook里帮你做很多事情。挑几个常用的说一下# 查看当前会话中的所有变量 %whos # 统计一行代码的运行时间 %time sum(range(1000000)) # 统计整个单元格的运行时间 %%time # 把某个文件里的代码加载进来运行 %run myscript.py # 在Notebook里直接执行系统命令 !ls # 设置图表在Notebook中直接显示 %matplotlib inline其中%matplotlib inline对于做数据分析的人来说几乎是必用的。没有这个魔法命令Matplotlib生成的图表可能不会直接在页面里显示加了之后图表就嵌在输出区非常直观。%run也很实用你可以把一段长脚本存成.py文件然后在Notebook里调用它兼顾了Notebook的交互性和脚本的复用性。4.5 Cell执行的先后顺序问题最大的隐形坑我自己踩过最大的坑就是Notebook的执行顺序。你可以在任何一个单元格里写代码也可以随便乱序运行它们但变量是全局共享的。这意味着如果你先运行了后边的单元格它会因为前面的变量还没定义而报错NameError反过来如果你把某个变量在旧单元格里重新赋值了后面所有依赖这个变量的计算结果都会悄悄变掉。解决办法是养成从上到下顺序执行的习惯或者每次写新代码前用Kernel - Restart Run All重新从第1个单元格跑到最后一个。这相当于把整个Notebook按顺序整体执行一遍能确保所有变量状态和代码逻辑一致。刚开始接触Notebook的人尤其要注意这个问题不然经常出现刚才还正常的怎么换个顺序就报错了的情况。4.6 安装Notebook插件让体验升级原生Jupyter Notebook的界面比较朴素但可以通过安装jupyter_contrib_nbextensions来扩展功能我最喜欢的是代码折叠和目录导航conda install -c conda-forge jupyter_contrib_nbextensions安装后重启Jupyter页面上会多出一个Nbextensions标签点进去勾选你需要的功能即可。我强烈推荐打开Table of Contents功能它会自动根据Markdown标题生成侧边栏目录Notebook超长的时候靠它导航方便得多。另外Codefolding功能可以折叠大段代码阅读别人代码时好用到哭。5. 常见问题与排查技巧实录5.1 终端找不到conda或jupyter命令怎么办这是安装后最常遇到的问题。症状是在终端尤其是Windows的PowerShell或cmd输入conda提示不是内部或外部命令。排查步骤很简单按顺序来第一确认安装时是否勾选了Add Anaconda to my PATH。如果没有那终端就找不到conda命令。解决办法是使用Anaconda自带的Anaconda Prompt来输入命令或者手动把Anaconda的Scripts目录和condabin目录加到系统环境变量Path中。第二如果你用的已经是Anaconda Prompt还是找不到检查是否装完没有重启。很多情况下重启一下终端或者重启电脑就好了。第三检查安装路径是否包含中文或空格。如果有conda可能装得不完整最保险的办法是卸载重装到纯英文路径下。5.2 运行Jupyter报ImportError: DLL load failed while importing rpds这个问题近一年多特别常见主因是Anaconda某个版本自带的rpds-py库和当前Python环境的DLL不兼容。报错信息里通常会指出importing rpds时发生了DLL加载失败。网上很多人提供的方案是重装rpds-py我也顺着这个思路处理过。操作如下pip uninstall rpds-py pip install rpds-py如果重装还不行那就升级或降级对应的Python环境因为这个问题在不同版本组合下表现不一样。在我实际处理过的案例中靠conda update conda更新conda再conda update --all更新所有包通常能解决。这类DLL问题大多数是包版本之间的二进制兼容性问题别老怀疑是系统中毒或者电脑坏了。5.3 单元格执行代码没有任何反应有时候点击运行单元格既不出结果也不报错一点反应都没有。这种情况通常有三个原因第一Kernel可能卡死了。点到菜单栏Kernel - Restart重启内核后重跑。我自己遇到这种情况多半是前面跑了个死循环或者特别耗内存的代码内核进程已经濒临崩溃了。第二代码陷入死循环导致内核在后台疯跑但是Notebook界面没有及时刷新。可以在代码里加上一些输出语句看看到底能不能跑到输出位置。第三浏览器插件拦截了Notebook的弹窗或者WebSocket连接。特别是在用了某些安全软件或浏览器广告拦截插件的情况下有可能导致Notebook和内核之间的通信中断。换成系统默认浏览器或者无痕模式试试往往就好了。5.4 端口被占用导致Jupyter启动失败运行jupyter notebook时如果提示端口8888被占用解决办法很简单jupyter notebook --port8889用不同端口启动就行。如果你希望以后都用一个固定端口比如9999可以在终端里执行jupyter notebook --generate-config然后编辑生成的jupyter_notebook_config.py文件找到c.NotebookApp.port这一行改成9999。改完保存以后启动就不用在后面加参数了。5.5 装了包但Notebook里import仍报ModuleNotFoundError这个问题十个人里有八个会遇到。核心原因是你在某个conda环境里用pip装了一个包然后又在另一个环境里打开了Notebook两边根本不是一个Python解释器。排查方法是在Notebook里先运行以下代码import sys print(sys.executable)它会输出当前Notebook使用的Python解释器路径。再看看你装包的终端里which python的结果如果两个路径不一样说明就不是同一个环境。解决办法是在正确的环境里装包——先conda activate 环境名再安装包最后启动Jupyter。还有个更隐蔽的情况用conda装了python包但jupyter的内核kernel还指向了另一个Python。这时需要给当前环境安装ipykernelconda install ipykernel python -m ipykernel install --user --name 环境名 --display-name 环境名这样以后在Notebook界面的Kernel - Change Kernel里就能选到正确环境了。5.6 数据分析场景下Jupyter的选型建议如果你已经用了一阵子Notebook感觉它有些地方不太顺手——比如没有代码调试断点、单独文件编辑体验一般——可以过渡到JupyterLab。JupyterLab是Notebook的升级版界面更像一个集成开发环境支持多标签页、文件拖拽、终端内嵌底层用的还是.ipynb文件学习成本极低。Anaconda新版已经默认集成了JupyterLab启动命令是jupyter lab我更建议新手直接用JupyterLab它既可以新建Notebook运行代码也能管理文件、查看图片、打开终端比老版Jupyter Notebook的体验好不少。不过本文讲的所有Notebook操作在JupyterLab里基本通用所以看这篇文章的内容无论你最终用哪个都不吃亏。6. 从安装到第一个项目5分钟跑通数据可视化6.1 我的建议路径装完工具之后最忌讳的就是继续刷教程不写代码。我建议你装好环境的当晚就创建一个新Notebook做一个最简单的数据可视化项目把工具链完整跑一遍建立信心。下面这段代码是我给几乎所有学生的第一个练手程序它把某个列表数据用中文标签画成柱状图同时验证了NumPy、Matplotlib以及Matplotlib中文显示是否正常。6.2 实操代码示例import numpy as np import matplotlib.pyplot as plt # 让图表输出到当前页面 %matplotlib inline # 模拟一组数据某水果店一周的苹果销量 days [周一, 周二, 周三, 周四, 周五, 周六, 周日] sales [120, 135, 128, 150, 168, 190, 202] plt.figure(figsize(8, 5)) plt.bar(days, sales, colorskyblue) plt.title(一周苹果销量趋势) plt.xlabel(星期) plt.ylabel(销量个) # 在柱状图顶部显示数值 for i, v in enumerate(sales): plt.text(i, v 3, str(v), hacenter, fontsize10) plt.show()如果中文标签显示为方块说明Matplotlib默认字体不支持中文。解决方法是添加plt.rcParams[font.sans-serif] [SimHei] # 或用你系统自带的常用中文字体 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号运行成功的话你会看到一张柱状图标题、坐标轴、数值都是中文。这个过程虽然简单但至少从零到一验证了环境正常、库能用、图表能出后面的路会顺很多。6.3 把Notebook导出成分享文档Notebook的一个酷炫之处在于你可以把运行结果直接导出成各种格式方便分享给不会用Python的同事或同学。菜单位置是File - Download as常见的选择包括HTML网页格式打开就能看最通用的分享方式PDF适合打印或交作业但需要额外装LaTeX组件Markdown适合放入代码仓库中做说明文档Python.py把Notebook中的代码单元格提取为Python脚本适合后续在命令行运行其中导出成.py文件这个功能经常被新手忽略。当你已经在一个单元格里调好代码逻辑但每次打开Notebook运行太麻烦就可以直接导出成脚本配合python xxx.py来跑。7. 我从这套工具链里悟到的一些心得用Anaconda和Jupyter Notebook这么多年最大的感受就是工具要为思路服务。很多人在环境搭建上花费了太多精力结果正事还没开始就累了。Anaconda的存在意义就是把基建门槛降到最低让你把脑力花在Python逻辑本身。而Jupyter Notebook的交互式特性能让你一边思考一边写代码写一步看一步这种心理反馈对学习特别重要。给新手的几个实在建议第一别追求最新版。Python和Anaconda的每个新版本都会伴随一些兼容性调整越是稳定版本社区踩过的坑越少你遇到问题时越容易搜到解决方案。我用过的版本中3.9和3.10的兼容性最稳。第二果断放弃系统自带Python。如果你的电脑之前装过Python而你现在又打算系统学习Python那我建议你完全转向Anaconda。两套Python共存带来的PATH混乱问题我见过太多人为此浪费了大量时间。治本的办法就是卸掉之前的直接用Anaconda。第三环境名、文件名、变量名都别用中文。这不是歧视中文而是很多第三方库默认只支持ASCII路径中文字符容易在文件编码、路径解析环节出问题。你也许能搜到中文环境的成功案例但没必要拿自己的时间赌这个概率。第四遇到报错先读最后三行。新手看到一大堆红字就慌其实Python的报错信息已经把问题定位到了具体文件和具体行数很多时候缺的只是一个冒号、一个引号、一个拼写。认真读最后一个错误行通常比复制到搜索引擎更有效。8. 最后分享一个小技巧我在安装配置完Anaconda后有个传统习惯是顺手更新一遍所有核心包。这一步很多教程完全没有提过但它能避免非常多在后续使用中遇到的莫名其妙的问题conda updgrade --all不过要注意如果你想保持某个项目环境稳定别轻易update那个环境的所有包。版本升级有时候不只是新功能也可能是破坏性变更对于正在进行的项目保持环境锁定反而更稳妥。只有当遇到包兼容性问题时再考虑针对性地更新某个包。这个度需要在实际使用中慢慢摸索但方向就是这么个方向。这篇文章从Anaconda的下载安装讲到了conda的环境管理再到Jupyter Notebook的日常使用和疑难杂症排查基本覆盖了Python入门阶段会用到的所有工具链知识。如果你能跟着文章把环境跑通再独立完成那个柱状图的小示例恭喜你你的Python之路已经正式开始了。剩下的路就是多写代码多踩坑。工具带来的效率提升永远只是辅助真正让你进步的是每天固定时间去写那几行代码的坚持。
返回列表