ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

致Python初学者 Anaconda入门使用指南完整版

致Python初学者 Anaconda入门使用指南完整版

前言


初学 Python 时,第一道坎往往不是语法,而是环境:不同项目要的 Python 版本不一样,装了 A 库又把 B 库的依赖搞坏,换台电脑环境全没了。Anaconda 就是为解决这类问题而生的发行版——它把 Python、包管理器 conda、以及一大批科学计算相关的库打包到一起,装完即用。


但初学者对它有两大误解。第一,把 conda 和 pip 当成「二选一」的对立面,其实两者擅长的事不同,配合不好会互相打架。第二,把所有包装进base环境,日子久了 base 越来越臃肿,还埋下依赖冲突的隐患。本文从「是什么、和 pip 什么关系」讲起,再到创建环境、装包、导出配置的完整命令,最后集中列几个新手常踩的坑。


需要说明:Anaconda 与 conda 属于第三方工具,命令行参数的权威出处是 conda 官方文档;本文的命令以官方文档为准书写,若与你的版本对不上,请以conda <子命令> --help的输出为准。


一、Anaconda、Miniconda、conda、pip 的关系


先把这几个名词分清:




名词是什么说明



conda包管理器 + 环境管理器既能装包,也能建隔离环境

Anaconda一个发行版含 conda + Python + 大量预装库 + 图形工具

Miniconda精简发行版只含 conda + Python,装什么自己加

pipPython 包安装器只管 Python 包,不建环境



conda 与 pip 的关键差别在于管的范围:conda 能安装并管理非 Python 的依赖(比如编译好的底层库),而 pip 只处理 Python 包。所以有「先用 conda 装、装不到再用 pip」的常见做法,但两者混用要小心,见后文坑点。


二、安装与初次验证


从 Anaconda 官网下载对应系统的安装包,按向导安装。安装完成后,打开「Anaconda Prompt」(Windows)或普通终端(macOS/Linux),运行:


conda --version
conda info

conda info会打印当前 conda 版本、base环境路径、channels(频道)、platform等信息。看到这些输出,说明 conda 已经可用。


在 Windows 上,如果是在普通 CMD 里运行conda提示找不到命令,通常是还没把 conda 初始化到该 shell。可以执行:


conda init

它会往 shell 配置文件里写入必要的初始化脚本,之后重新打开终端即可。conda init支持指定 shell(如bash、powershell),不确定就用默认的。


三、环境管理:核心命令表


环境(environment)是 conda 的核心概念,每个环境有独立的 Python 版本和包集合。下面是最常用的一组命令:




目的命令



创建环境并指定 Python 版本conda create -n myenv python=3.11

激活环境conda activate myenv

退出当前环境conda deactivate

列出所有环境conda env list

查看环境信息conda info --envs

克隆环境conda create -n copyenv --clone myenv

删除环境conda env remove -n myenv



创建环境后,命令提示符前面通常会出现(myenv),表示已进入该环境。一个完整的小流程如下:


# 建一个 Python 3.11 的环境
conda create -n demo python=3.11

# 激活
conda activate demo

# 确认当前用的是哪个 Python
python --version

# 退出
conda deactivate

注意conda env list的输出里,当前激活的环境前面会有*标记,base是默认环境。不要把所有工作都放在base里做——正确姿势是「一个项目一个环境」。


四、包管理


装包、升级、卸载的基本命令如下:




目的命令



在当前环境装包conda install numpy

指定环境装包conda install -n myenv numpy

指定频道装包conda install -c conda-forge numpy

指定版本conda install numpy=1.26

列出已装包conda list

升级某个包conda update numpy

卸载某个包conda remove numpy

更新 conda 自身conda update -n base conda



「频道(channel)」决定从哪里下载包。默认频道之外,conda-forge是使用很广的社区频道,很多新包会先出现在那里。用-c conda-forge指定即可。企业或商业使用时,请自行核对所使用频道的官方条款,这不属于技术问题,但会影响合规。


五、导出与重建环境


把环境共享给别人、或换机器复现,靠一个环境文件:


# 导出当前环境的依赖清单
conda env export -n myenv > environment.yml

# 在另一台机器上按文件重建(推荐写法)
conda create -n myenv --file environment.yml

导出的environment.yml会记录 Python 版本、各包的版本和来源频道,是复现环境的可靠依据。较新的 conda 文档还推荐用conda export生成锁文件(lockfile),它能记录更精确的解析结果,支持跨平台重建;具体用法以你所用 conda 版本的文档为准。


六、图形界面与常用附带工具


不习惯命令行的话,Anaconda 自带图形界面Anaconda Navigator,可以在里面点击完成「创建环境、安装包、启动应用」这些操作,效果和命令行一致,只是更直观。


安装时通常还会带上几个常用工具:




工具启动方式用途



Jupyter Notebookjupyter notebook浏览器里逐块运行代码

JupyterLabjupyter lab功能更全的笔记本界面

Spyderspyder偏 IDE 风格的科学计算编辑器



这些工具同样装在环境里,属于普通包——某个环境里没有,就在该环境里conda install jupyterlab装一个。另外,conda info会列出环境目录(envs directories),想知道某个环境具体建在哪个路径下,看这里或conda env list的输出即可。


常见坑点



  1. ❌ 在全新终端里直接敲conda activate myenv,报CommandNotFoundError,以为没装好。


✅ 先执行conda init初始化 shell,重开终端再激活;或改用 Anaconda Prompt。



  1. ❌ 所有库都往base里装,用久了各种版本冲突,import到处报错。


✅ 每个项目单独conda create -n <名字>,base只留 conda 本身。



  1. ❌ 在同一个环境里先conda install又pip install同一个包,依赖记录出现两份来源。


✅ 优先用 conda 装;conda 确实没有才用 pip,并且尽量把 pip 安装放在最后一步。



  1. ❌ 忘了写-n myenv,本想装进项目环境,结果装到了当前激活的另一个环境或 base。


✅ 装包前先conda env list确认激活的是哪个环境,必要时显式-n指定。



  1. ❌ 把environment.yml当成「跨平台万能钥匙」,换到不同操作系统后重建失败。


✅ 环境文件常包含平台相关的构建版本;跨平台时按需删减或改用锁文件方案。



  1. ❌ 在 Windows 的普通 CMD 里既想用activate又想用conda activate,两者行为不一致。


✅ 统一使用conda activate;conda init后各 shell 行为会保持一致。



  1. ❌ conda 卡在「Solving environment」很久,反复重试却没有改善。


✅ 先把 conda 更新到较新版本(conda update -n base conda),新版本求解器通常更快;具体版本行为以官方文档为准。



  1. ❌ 想用 conda 建一个 Python 2.7 环境来跑老代码,还指望能长期维护。


✅ Python 2.7 已于 2020 年 1 月 1 日停止维护;新项目一律用 Python 3,老代码应逐步迁移。


总结




场景命令



建环境conda create -n myenv python=3.11

切环境conda activate myenv/conda deactivate

看环境conda env list

装包conda install -n myenv numpy

指定频道conda install -c conda-forge numpy

删环境conda env remove -n myenv

导出conda env export -n myenv > environment.yml



Anaconda 的价值不在「预装了多少库」,而在「让每个项目拥有干净、可复现的独立环境」。养成「一项目一环境、能用 conda 就不混 pip、环境文件随手导出」这三个习惯,初学者就能绕开大半的环境问题。遇到记不准的参数,用conda <子命令> --help查,比在网上搜来的命令可靠。




RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进