做Python开发这几年,被问得最多的一个问题是:"我刚学Python,到底要不要装Anaconda?"我的答案一直很明确:如果你要做数据分析、机器学习,或者只是刚接触Python生态,那不仅建议装,而且建议第一个装的就是它。Anaconda自带Python解释器、包管理工具conda和Jupyter Notebook,把环境管理、依赖安装、交互式编程一次性全解决,省掉新手最头疼的环境配置环节。这篇教程就是写给零基础入门者的,我会用最直白的方式,把Anaconda的下载、安装、配置、使用,以及Jupyter Notebook的常用操作全部讲清楚。你不需要有任何命令行基础,照着步骤来就能把环境搭起来,而且每步为什么要这么做,我也一并说透。
1. 装之前先搞清楚几个基本问题
1.1 Anaconda到底解决了什么问题
很多新手在装Python之前,其实并不清楚自己需要什么。如果直接从python.org下载Python解释器,你得到的只是一个空荡荡的运行时,想装第三方库还得手动用pip一个个装,装多了版本还会互相打架。而Anaconda是一个发行版,它把Python解释器、常用科学计算库(NumPy、Pandas、Matplotlib等)、包管理器conda、以及Jupyter Notebook全部打包在一起。装好之后,你不需要再单独配置任何东西,打开就能写代码、做数据分析。
这里有个很容易忽略的点:Anaconda本身是个发行版,它带的Python解释器和你从官网下载的Python在本质上没有区别,差别在于Anaconda帮你预装了几百个常用包,并且用conda管理这些包的版本依赖。对于入门来说,最直接的好处就是"开箱即用"——不用折腾环境,不用纠结装什么库,省下来的时间可以全部花在学语法和写代码上。
另外,Anaconda还附带了一个图形界面Anaconda Navigator,你可以在里面点鼠标创建环境、安装软件包、启动Jupyter Notebook。对完全没碰过命令行的新手来说,这个界面友好得多。不过我的建议是:图形界面能帮你度过最初两周,但一定要尽早开始用命令行,因为后续深入下去,conda命令的效率是图形界面完全比不了的。
1.2 conda与pip:两个包管理器的区别
初学阶段,很多人分不清conda和pip,以为它们是同一个东西。它俩有重叠的功能,定位却很不一样。pip是Python官方的包安装工具,专门用来安装PyPI(Python Package Index)上的包。conda是Anaconda自带的包管理工具,它不仅管Python包,还能管非Python的依赖,比如C/C++库、CUDA相关的驱动库、编译器等。
举个例子,你在Windows上装一些包含C扩展的包(比如某些图像处理库),pip经常在编译环节报错,但conda安装的是预编译好的二进制版本,直接就能用,省事得多。再比如你想装PyTorch这类框架,conda能一并处理它依赖的底层库,而用pip时可能需要自己手动补齐依赖。
那是不是有了conda就不需要pip了?也不是。有些小众包只发布在PyPI上,conda源里没有,这时候还是得用pip。实操中的做法是:conda优先,conda装不到再用pip,而且尽量在conda环境里用pip,装完了及时用conda list检查一下环境状态,避免依赖被pip弄乱。这个习惯很重要,我后面还会讲到。
1.3 虚拟环境:为什么要做环境隔离
再解释一个新手最容易忽视的概念——虚拟环境。你写项目A时可能用了Python 3.9加某个库的1.x版本,写项目B时又需要Python 3.11加同一个库的2.x版本,如果全装在同一个全局环境里,装A就会搞坏B,装B又会搞坏A。虚拟环境就是给每个项目开一个独立的"房间",各自装各自的依赖,互不干扰。
conda创建虚拟环境极其简单,一条命令就能完成,这也是Anaconda在众多Python发行版中脱颖而出的核心原因之一。后面实操部分我会带你把"创建环境、激活环境、在环境里装包、切换环境"完整走一遍。提前说一句:不管你是用Anaconda还是只用原生pip,虚拟环境这个习惯都值得从第一天就养成。
2. 安装Anaconda:下载、安装、验证一条龙
2.1 安装包从哪里下载最靠谱
下载是第一步,也是很多人卡住的地方。Anaconda安装包体积在几百MB到1GB不等,官方下载地址是Anaconda官网的下载页面,选择自己系统对应的版本即可。不过官网服务器在国外,国内用户下载速度往往很慢,经常下到一半就失败。
这种情况下推荐使用清华大学开源软件镜像站。镜像站是官方包的完整拷贝,内容和官网完全一致,下载速度却快很多。进入镜像站后找到Anaconda的archive目录,里面按时间列出了所有历史版本。新手我建议直接挑最新版本下载,文件名一般是Anaconda3-版本号-系统架构.exe(Windows)或对应的.sh(Linux)/.pkg(macOS)。
这里有个细节必须提醒:看清系统架构。绝大多数Windows电脑是64位,就下载x86_64版本,别下成32位。苹果电脑则要看芯片类型,M系列芯片选arm64版本,Intel芯片选x86_64版本。装错架构虽然能装上,但后面装某些包时会遇到莫名其妙的兼容问题。
2.2 Windows完整安装步骤
拿到exe安装包之后,双击运行,整个流程就是一路Next,但中间有三个选择需要认真对待。第一个是选择安装位置,默认装在当前用户的目录下,比如C:\Users\你的用户名\anaconda3,建议保持默认。不建议装到C盘以外的自定义目录,因为某些配套工具对路径里的空格和中文目录名兼容性不好,一旦出问题排查起来非常麻烦。
第二个选择是是否把你的Anaconda添加进系统PATH环境变量,安装界面会明确提示"Not recommended"。默认选项是不勾选,我建议新手也保持不勾选,原因我在下一小节单独讲。第三个选择是"Register Anaconda as my default Python",也就是把Anaconda设为系统默认Python,可以保持勾选,这样后续开发工具能自动识别到它。
安装过程比较久,从几分钟到十几分钟不等。装完后不用急着关,可以顺手把Visual Studio Code这个勾选项也选上,这是微软出的免费编辑器,后面写Python代码会用到,一起装省得再单独配。
2.3 那个PATH复选框到底要不要勾
安装界面里有一句"Add Anaconda3 to my PATH environment variable"的说明,后面跟着"Not recommended",很多新手不明白为什么官方自己不推荐勾选。原因在于:如果你电脑上之前装过别的Python,勾选之后会把Anaconda的Python和原来的Python混在一起,可能导致命令行里输入python进入的是Anaconda的版本,而原来项目的脚本却期待旧版本,环境一乱各种问题随之而来。
但这里也有个矛盾,很多新手在命令行里输conda发现找不到命令,就是因为没勾选PATH。那到底怎么选?我的建议是:如果你是纯粹的Python新手,电脑上没有别的Python环境,勾不勾选都能正常用——但你得习惯用Anaconda Prompt而不是普通的cmd窗口。Anaconda Prompt会在启动时自动加载conda环境变量,相当于一个"已经配好环境的命令行",在这个窗口里输入conda、python、jupyter这些命令都能正常工作。
如果你电脑上已经装了别的Python,那就保持默认不勾选,之后始终通过Anaconda Prompt进入命令行。顺便说一句,遇到网上教程让你手动加环境变量时先别急着操作,绝大多数场景下用Anaconda Prompt就够了,手动改PATH反而容易埋雷。
2.4 安装完怎么验证装成功了
安装完成后,先在Windows开始菜单里找到Anaconda Prompt并打开,输入conda --version,能看到类似conda 24.x.x的输出就说明conda已经可用了。再输入python --version,如果显示的版本号和你下载的Anaconda版本自带的Python版本对得上(比如Anaconda3-2024.06对应Python 3.11或3.12),说明安装无误。
我还习惯做另一项检查:输入conda info,会显示当前conda的配置信息、环境路径、channel源等。从这里可以看到默认环境base的位置。如果这些命令都正常,那安装过程就算彻底成功了,可以放心进入下一步。如果输入conda提示"不是内部或外部命令",多半是环境变量没有生效,请回到Anaconda Prompt窗口里操作,或者在开始菜单重新打开一次Anaconda Prompt再试。
3. Anaconda第一次使用:图形界面和命令行
3.1 Anaconda Navigator能做什么
装完后从开始菜单打开Anaconda Navigator,你会看到一个图形化界面,上面列着Anaconda自带的各个工具,比如Jupyter Notebook、Spyder、VS Code等,还显示当前的conda环境和已安装的包。这个界面的最大价值就是可视化:你可以在Environment选项卡里查看当前环境装了哪些包,可以在Home选项卡里一键启动Jupyter Notebook,可以在左侧的Channels里管理软件源。
对新手来说,Navigator最常用到的功能是在Environment里创建新环境。点Create,输入环境名,选择Python版本,它会自动帮你搭好一个干净的环境。创建完切换过去,界面会显示这个环境里预装的基础包,后续还可以在搜索框里输入包名来勾选安装。整个过程全程鼠标操作,非常直观。
不过我要坦白说,Navigator的便利恰恰也是它的局限。以我的经验,如果你准备长期做开发,Navigator只适合作为"可视化巡检工具",真正高频操作还是要在命令行里完成。因为命令行有可复制、可脚本化、可追溯的特点,同样一个环境,用命令创建和用鼠标创建,前者还能把命令存进文档,以后换电脑照着跑一遍就恢复环境。
3.2 conda命令行速查:创建环境、激活环境、装包
命令行是Anaconda真正的核心。打开Anaconda Prompt,先记住这几条命令就够了。
创建环境用conda create -n 环境名 python=版本号,比如conda create -n myenv python=3.10,conda会先解析依赖,然后询问你是否继续下载安装,输入y确认。激活环境用conda activate myenv,激活后命令行提示符前面会出现(myenv)字样,这就表示你现在处于这个虚拟环境里了。退出环境用conda deactivate,回到base环境。
在环境里安装包用conda install 包名,同时安装多个包就用空格隔开:conda install numpy pandas matplotlib。查看当前环境所有安装的包用conda list,查看环境中某个包的具体版本也用这条命令加包名过滤。删除环境用conda env remove -n myenv。复制一个环境做备份用conda create -n myenv_backup --clone myenv。
这里我要特别强调激活环境的顺序。很多人装完包发现import不了,排来排去最后发现是包的安装位置搞错了:在base环境里装了包,却在myenv环境里跑代码,当然找不到。所以养成一个肌肉记忆:任何操作之前,先看一眼命令行前缀是(base)还是(myenv),确认当前在哪个环境再动手。
3.3 配置国内镜像源,告别下载慢
conda默认的软件源在国外,国内用户安装包时经常卡在Solving environment或者下载速度只有几十KB/s。好在conda支持切换镜像源。以清华镜像为例,在Anaconda Prompt里依次输入下面两条命令:
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 config --show channels,就能看到已经添加的镜像地址。正常情况下channel已经带上了https://mirrors.tuna.tsinghua.edu.cn/...前缀,之后再装包速度就会有明显提升。
如果你发现某些包在清华主镜像里找不到,还可以考虑中科大镜像源,或者阿里云的conda镜像。但提醒一句:不要一下子把好几个镜像源全部加进去,因为conda会按照channel顺序挨个查找,源太多反而会拖慢解析速度,甚至引发版本匹配混乱。最多保留一两个常用源就够了。另外,我见过有人反馈配置完源之后出现CondaHTTPError或SSL证书相关报错,遇到这种情况先检查网络连接,再看一下是不是把channel地址末尾的斜杠丢了,这两处是最常见的出错点。
4. Jupyter Notebook:从启动到熟练
4.1 启动方式与界面构成
Jupyter Notebook是Anaconda自带的交互式编程工具,特别适合做数据分析、演示代码、记录学习笔记。它把代码、运行结果、Markdown文字、数学公式、图表全部融合在一个文档里,你在浏览器中编辑和运行,体验很像一个增强版的交互式文档。
启动方式有两种。一种是在Anaconda Navigator的Home页面里点击Jupyter Notebook的Launch按钮。另一种是在Anaconda Prompt里输入jupyter notebook,系统会自动打开浏览器进入Notebook主页。我更推荐第二种方式,因为它会让你明确知道Notebook是跑在哪个环境里的——这一点很关键,后面细说。
启动后浏览器里会出现一个文件列表界面,显示你当前工作目录下的文件。点击右上角的New按钮,选择Python 3(或者你创建的环境名),就会新建一个Notebook文件(扩展名.ipynb),进入编辑页面。页面主体由一个一个的单元格组成,每个单元格默认是代码类型,在里面输入Python代码后按Shift+Enter就可以运行,输出会直接显示在单元格下方,非常直观。
4.2 单元格类型与Markdown
Notebook的每个单元格都可以切换类型,最常见的两种是代码(Code)和Markdown(Markdown)。代码单元格用来写Python代码,运行后显示输出结果。Markdown单元格用来写说明文字,支持加粗、标题、列表、链接,还能用LaTeX写数学公式。要修改单元格类型,在工具栏下拉框里选,或者用快捷键M切换到Markdown、Y切换回代码。
我建议从第一天起就养成"代码配说明"的写作习惯:每个分析步骤之前,先用一个Markdown单元格写下你要做什么、为什么这么做。这样你的Notebook既是一份可以执行的代码,又是一份可以给别人看的分析报告。很多知名开源项目里的示例Notebook都是这种结构,值得模仿。
另外,单元格的运行状态需要留意:当单元格正在执行时,左侧的In []会变成In [*],括号里出现星号说明代码还在跑,运行完成则会变成In [1]这样的编号。如果你的程序看起来卡住了,先看看是不是处于In [*]状态,区分"在运行"和"真卡死"再决定要不要强制中断。
4.3 必会的快捷键
Jupyter Notebook用快捷键能明显提升效率。以下这几组最常用,建议背下来:
- Shift+Enter:运行当前单元格并进入下一个单元格
- Ctrl+Enter:运行当前单元格但不跳转
- Alt+Enter:运行当前单元格并向下新建一个单元格
- Esc:进入命令模式(此时可以管理单元格)
- A / B:在当前位置上方/下方新建单元格
- DD:连续按两次D,删除当前单元格
- M / Y:切换单元格为Markdown / 代码
- Shift+Tab:查看函数的帮助文档
命令模式的概念有点绕,不用着急——你只需要记得在单元格外面按Esc会进入命令模式,这时候按字母键是操作单元格而不是输入内容。如果不小心按出一堆字母莫名其妙,多半就是进入了命令模式,按一下Enter或者Y就能切回编辑状态。
还有一个功能容易被忽略:菜单栏的Kernel(内核)菜单。里面有三项功能你要会用:Restart(重启内核)、Restart & Clear Output(重启并清空输出)、Restart & Run All(重启并从头运行所有单元格)。当变量的定义顺序乱了、或者装完新包后需要重新加载时,就用Restart & Run All,这相当于给整个Notebook做一次干净的从头执行,比对单元格逐个点运行要可靠得多。
4.4 魔法命令与指定内核
Jupyter Notebook提供了一类以%开头的魔法命令,它们不是Python语法,而是Notebook特有的便捷指令,但对实际操作帮助很大。最常用的几个:
%matplotlib inline:让matplotlib绘制的图表直接显示在单元格下方,而不弹出一个单独的窗口。做数据分析基本每次都会用到。%time和%timeit:统计单行代码的执行时间,用来快速评估代码性能。!加shell命令:!pip install 包名可以直接在Notebook里安装包,相当于不用切回命令行执行系统命令。%who:查看当前环境中定义了哪些变量。
还有一个新手特别容易混淆的点:Notebook右上角显示的内核名字并不一定等于你当前想用的环境。举个例子,你在Anaconda Prompt里激活了myenv,然后启动jupyter notebook,打开的Notebook默认可能仍是base环境的内核,跑代码用的是Python 3(base),而不是myenv的版本。解决办法是:在Notebook菜单里选择Kernel -> Change Kernel,然后选到myenv对应的内核。如果列表里没有myenv这个选项,需要在命令行先给这个环境装ipykernel包,然后执行python -m ipykernel install --user --name myenv,把它注册进Jupyter的内核列表里。
5. 新手最容易踩的坑与排查方案
5.1 conda命令找不到怎么办
最经典的报错是输入conda时提示"conda不是内部或外部命令"。如果你用的是Windows并且当初没勾选PATH,正常打开开始菜单里的Anaconda Prompt是不会出这个问题的,因为Prompt会自动加载配置。如果你是在普通的cmd或者PowerShell里输入conda,那大概率就是环境变量没配置。
建议的排查顺序是:先确认自己是不是在Anaconda Prompt窗口里;如果是在别的终端里输入,换成Anaconda Prompt再试。如果你的确有需要在普通终端里用conda的需求,那就手动把Anaconda的Scripts目录和Library/bin目录加入系统PATH,但操作前一定做好备份,操作完重启终端验证。整个过程中,别同时开多个终端窗口测试,因为环境变量的读取是在终端启动时就完成的,改完之后必须开一个新终端窗口才会生效。
5.2 Jupyter打不开或连不上内核
启动jupyter notebook后浏览器没自动打开,这种情况不用慌,从终端窗口的输出信息里能看到一个URL链接,形如http://localhost:8888/?token=一串字符,手动复制到浏览器地址栏打开就好。如果打开了页面却新建Notebook时报错,提示内核一直连接不上,多数原因是内核对应的环境有问题。
我的处理经验是三步走:第一步,在Notebook页面里先试着Kernel -> Restart,很多时候是内核进程假死;第二步,如果Restart没用,回到Anaconda Prompt里用conda install ipykernel或者pip install ipykernel把内核组件重装一遍,再执行python -m ipykernel install --user --name 你的环境名重新注册;第三步,如果还不行,重启一下电脑再启动Jupyter,别小看这个笨办法,确实能解决一部分资源占用导致的诡异问题。还有一个坑:端口被占用。如果启动时提示端口已被占用,可以用jupyter notebook --port 8899指定一个新的端口。
5.3 环境搞混了,包装错了位置
这是我在各种教程底下见过最多的求助帖:明明conda install装了包,运行Jupyter时却ModuleNotFoundError。几乎都是环境混淆导致的。原因我已经在前面提过:Jupyter的内核指向了base环境,但你实际需要的是myenv环境里的包;或者反过来,你在base里装了包,代码却在myenv里跑。
排查方法其实很简单,在Notebook的代码单元格里执行下面两行,看输出的路径指向哪里:
import sys print(sys.executable)如果输出的路径是...anaconda3\python.exe,说明当前内核是base环境;如果输出的是...envs\myenv\python.exe,说明内核已经是myenv。确认之后,再用Kernel -> Change Kernel切换到你真正需要的内核即可。如果这个习惯能坚持下来,你会在环境管理上少踩很多坑。
5.4 依赖冲突和磁盘占用问题
conda用久了会积累大量包缓存和临时文件,一个最直观的现象是环境目录体积越来越大,甚至安装新包时提示磁盘空间不足。处理方法是定期清理缓存:conda clean --all可以清掉下载缓存和临时包。如果长期不用的环境确定不会再碰,就用conda env remove -n 环境名删掉,能释放不少空间。
至于依赖冲突,大多发生在混用pip和conda的场景。比如用conda装了某个包后,又用pip装了同一个包的不同版本,版本解析就会出问题。我的建议是:一个环境里尽量统一用conda管理包,确实需要pip时,在requirements.txt里记录清楚,并且装完pip包后用conda list复核环境状态。进阶用户可以考虑用conda env export > environment.yml把环境完整导出,换机器时用conda env create -f environment.yml一键重建环境。这套流程虽然入门阶段用不上,但值得提前知道。
另外还有一个小问题出现频率很高:Anaconda启动后界面卡死或者白屏。大多数情况下是Navigator的bug或者网络加载导致,先关掉重开;如果反复出现,清理一下C:\Users\你的用户名\.conda目录下的缓存,再不行就更新conda本身:conda update conda。遇到界面问题先别急着卸载重装,很多问题更新一下就能解决。
最后再分享两个我个人的使用习惯。第一,从装好的第一天起,就坚持"一个项目一个环境"的原则,哪怕项目再小也新建独立环境,这样能保证任何项目都不会因为环境变更而突然跑不起来。第二,给环境命名时用项目名而不是"test""ceshi"这种无意义的名字,名字里带上Python版本信息比如myproj_py310,几个月后你自己看到还能想起来这个环境是干什么的。这套模式陪我走过了好几个完整项目,从来没有因为环境问题耽误过正事。你照着装完、跑通第一个Notebook之后,多半也会体会到这种"环境顺了,写代码才顺"的感觉。