Anaconda的简单使用
🌿使用情景
🍂多版本管理需求
需求原因:
不同项目支持的同一种语言的版本不同,即这个项目需要python 3.0 + numpy 2.0 ,那个需要python 2.0. + numpy 2.0…
解决方法:
手动化管理的方法
,想要运行这些项目,就要为它提供共不同的python + 依赖的库,运行对应的项目时就手动切换对应的依赖手动化管理方法的缺陷
,针对一个项目就要管理一个与之对应的python版本 + 相关依赖的文件夹
- 但手动管理很麻烦,意味着要记住每个项目与依赖的对应关系
- 同时也不方便项目的转发,毕竟接收到一个项目就要安装对应版本的依赖,但人工生成配置清单、一个个手动下载依赖太麻烦了
🍂由手动转自动化管理需求的原因
这些东西太多,人工分类,管理总是会出错。而且来回切换也耗费效率,所以,就产生了一种是否可以集中化且自动化管理的需求,anaconda由此产生。
🍂总结
“可以手动,但没必要”——Anaconda 的虚拟环境本质上是帮你把手动操作标准化、自动化,减少人为错误。除非有特殊限制,否则推荐使用工具管理,尤其是涉及复杂依赖或多环境时。
🌿Anaconda的介绍
已知anaconda的产生是为了有条不紊的自动化管理python、python库以及其他大量的依赖,现在来看看它如何实现这种有条不紊的管理
🍂Anaconda的组成
● Anaconda的功能模块
○ 1.Conda
是啥:
它是
Anaconda 的核心包管理和环境管理工具
,能够快速安装、运行和更新各类包,同时可以创建独立的虚拟环境
,避免不同项目之间的包版本冲突问题。总结:
最重要模块
:Anaconda 的核心包管理和环境管理工具,即组成Anaconda的最重要模块,负责下载并隔离不同的环境(如,下载了多个版本的numpy,把它们分开管理以服务于不同的项目)下载功能
:快速安装、运行和更新各类包环境独立管理功能
:可以创建独立的虚拟环境(管理不同组合的环境,需要时用命令调用)
○ 2.图形化界面(Navigator)
Anaconda Navigator 是
Anaconda 提供的图形化管理工具(GUI)
,让用户可以通过可视化界面管理 Conda 环境、安装包、启动应用(如 Jupyter、Spyder),而无需记忆命令行指令。
○ 3.Anaconda Prompt(Windows)
Anaconda Prompt 是
Windows 系统
上Anaconda 提供的一个优化命令行终端
,它自动配置了 Conda 环境变量,使得用户可以直接使用 conda 命令,而无需手动设置系统环境变量。就是不用像常见软件配置好Conda的环境变量才能在CMD中使用Conda命令(不配置会显示“不是内部或外部命令”)
● 附带功能
○ 1.集成开发环境(IDE)
不是Anaconda自己研发的IDE,而是集成别人的模块在自己的软件里。它
支持集成多个IDE
- Jupyter Notebook/Lab:交互式编程工具(预装)
要连接python解释器才能运行代码
- VS Code、PyCharm:需单独安装,但可配置 Conda 环境
- Spyder:科学计算专用 IDE(预装)…
○ 2.默认Python以及预装库
Anaconda 自带一个基础 Python解释器和大量预装的科学计算库(如 NumPy、Pandas、Matplotlib 等,为数据分析和科学计算提供了便利)
● 总结
Anaconda的关键在于有条不紊的自动化管理不同的环境,所以有Conda就够,通过命令行就可以操纵管理不同项目的环境。其他是附带功能,可选可不选。
- 图形化界面:命令行完全可以代替,只是对新手友好罢了
- 集成IDE和预装库:本地有的IDE完全可以代替,写完代码命令行调用对应环境运行就好。预装库也是,需要啥版本直接自己下,完全不用Anaconda猜测。所以,这些预装功能完全是为了新手友好。
- Anaconda Prompt(Windows):直接配置好Conda的环境变量,就可以在CMD里用了,完全不用多此一举。所以也纯粹是为了新手友好。
本质上只需要Cnoda就好
- 而Anaconda开发者也想到了这一点,所以提供了各种组合的版本供不同需求的开发者下载。新手直接下默认的就好,若有相关经验,再考虑精简版本的。
🍂默认环境与自定义环境的设计
● Anaconda实现不同项目所需环境管理和隔离的原理
环境思想:
- 在Anaconda中采用了这样一种思想,把一个python + 相关依赖称作一个环境,依赖环境的名字管理这些环境
- 环境间相互隔离,所以名字不同的环境却可以有相同的配置(但从开发角度来说完全没用,这个例子是解释Anaconda的环境隔离原理罢了)
- 同时,一个环境也意味着有一个python解释器和一堆依赖。要使用,就要下载存储,所以创建一个环境,就要下载对应的内容,由此,多占据PC的一些存储。
即一个环境 = 一个python解释器 + 一堆相关依赖(库)集合,多个环境就意味着多个python解释器+多个依赖集合总结:
本质上就是存储换效率的思想,Conda 的“冗余安装”牺牲了部分磁盘空间,但换来了 绝对可靠的环境隔离,这是其成为数据科学领域标准工具的核心原因。如果你的项目对依赖极其敏感,Conda 是最优解;如果只是简单开发,可以用 venv 或 pyenv。
思考:
为啥python们不共用呢?使用对应版本的python手动切换然后加上对应环境的依赖不就行了
回答
:python不分离出来的原因是因为强绑定,所以分离出来反而人工不好管理了。即python版本支持的依赖版本也是有要求的,所以如果分离python解释器出来,那这个解释器兼容什么依赖要人工判断了,这当然不切实际。所以不分离它们。更加详细的解释:
**Python 的许多科学计算库(如 NumPy、TensorFlow)是 C/C++ 编写的扩展模块,编译时会严格绑定到:**特定 Python 版本(如 Python 3.8 的 C API 和 3.11 不兼容)。操作系统的 ABI(如 Linux 的 glibc 版本)。 **如果强行共用 Python 解释器:**在 Python 3.8 下安装的 NumPy 无法被 Python 3.11 加载(会报 ImportError: incompatible binary)。即使 Python 代码语法兼容,底层二进制文件也无法通用。
就要分离python的办法————替代方案(极度不完美)
venv/pyenv:轻量但无法隔离 Python 解释器本身。
手动切换:高风险,易出错,不适合科学计算。
● Anaconda的默认环境与自定义环境
○ 对比
默认环境
:提供一个通用的环境,即一个python解释器 + 配套的依赖(⚠️注意:base包含Conda自身,删除后Anaconda将无法运行)自定义环境
:用户自定义的python解释器版本 + 对应依赖
○ 详细解释
默认环境(base)
自动创建
:安装Anaconda时自动生成,名为base(或root)必需存在
:所以下载Anaconda时,选择只下载Conda时,可以不选择下载预装库(即base里不存在预装的python和依赖),但依旧会生成一个默认环境但里面只有Conda。
- base 是 Conda 的“根环境”,包含运行 Conda 自身所需的 最低配置(Python 解释器、conda 命令等)。删除会导致 Conda 崩溃。
- 即base必需存在,因为它是Conda存在的基础。(而base可以禁用,但不能被删除必需存在)
用户可对base的操作
:
- 完全不用 base(通过配置禁止自动激活):conda config --set auto_activate_base false
- 清空 base 的库(但保留 Python 和 Conda):conda list | grep -v “conda|python” | xargs conda remove --force
用途
- 管理Conda自身:更新、配置等操作需在base中执行。
- 临时测试:快速运行简单脚本(但正式项目建议用独立环境)。
注意事项
- ❌ 不建议直接在其内开发项目(修改base的依赖可能引发工具链冲突(如Jupyter崩溃))
自定义环境
自主创建
:用户主动创建:通过conda create命令生成自主下载依赖
:按需安装依赖,与base和其他环境隔离
- 可以手动下载各项依赖,但Anaconda提供了环境配置文件environment.yml,可以自动化下载,快速复现环境
○ 这些环境的存储位置
安装依赖前提
所有通过 Conda 安装的依赖必须归属于某个环境,这是 Conda 的绝对设计原则。
- 所以必需创建环境才能下载依赖,即激活/创建环境后才能下载依赖
# 显式指定环境 conda install -n my_env numpy# 隐式(当前激活的环境) conda activate my_env conda install pandas
- Conda下载分为两种模式,一个是全局安装,即对base环境操作,一个是自定义安装,即对自定义环境操作
base环境的默认生成位置 + 自定义环境的位置
默认路径规则
- base 环境的位置,
永远与Anaconda安装目录重合
- 自定义环境默认规则:所有自定义环境存储在 <安装目录>/envs/ 下(如 D:\Anaconda\envs\my_env
- 自定义路径:可通过以下命令修改默认环境目录(但 不影响 base)
路径类型 | 默认位置 | 是否可自定义? | 关键关系 |
---|---|---|---|
Anaconda 安装目录 | C:\Users<用户名>\anaconda3\ (Win) ~/anaconda3/ (Linux/macOS) | ✅ 安装时可修改(如 D:\Anaconda) | 包含 Conda 核心程序 和 base 环境 |
环境存储目录 | <安装目录>/envs/<环境名>/ | ✅ 通过 conda config 修改默认环境位置 | 仅存放自定义环境 |
与环境有关的命令
- 查看所有环境路径的命令:conda env list / conda info --envs
- 自定义创建环境:
- 创建环境并指定Python版本:conda create -n my_env python=3.9
- 创建时安装指定包:conda create -n ml_project python=3.8 numpy=1.20 pandas scikit-learn
- 创建即删的临时环境:conda create -y -n temp_env numpy && conda remove -y -n temp_env --all
- 下载依赖时环境的切换:
- 显式指定环境:conda install -n my_env numpy
- 隐式(当前激活的环境):conda activate my_env、conda install pandas
- 若尝试在未激活环境时运行 conda install,默认会修改 base 环境(可能破坏 Conda 自身)。
○ 总结
工作时一定要激活/新建环境,防止在base环境中工作,影响Conda。
配置好了虚拟环境就激活,然后打开项目,在这个环境下运行,运行完关闭环境
🌿使用Conda
🍂Conda相关命令
命令 | 解释 | 格式 |
---|---|---|
环境 | Anaconda 自带 Python,安装时会默认安装一个特定版本的 Python(如 Python 3.9) | python --version |
Anaconda 允许你创建多个独立的 Python 环境,每个环境可以有不同的 Python 版本和包。 | conda create --name myenv python=3.8 | |
激活某个环境 | conda activate myenv | |
退出当前环境 | conda deactivate | |
列出所有已创建的环境 | conda env list | |
删除某个环境 | conda remove --name myenv --all | |
查看当前 Anaconda 环境 会列出所有已创建的 Anaconda 环境。当前激活的环境会在环境名称前用*标识,并且命令提示符也会显示当前环境的名称 | conda env list | |
包管理 | Anaconda 使用 conda 或 pip 来安装和管理 Python 包。 | conda install numpy pip install requests |
更新包 | conda update numpy | |
卸载包 | conda remove numpy | |
查看已安装的包 | conda list | |
切换 Python 版本 | Anaconda 允许你更改现有环境的 Python 版本(conda create --name py37_env python=3.7) | conda install python=3.9 |
Anaconda Navigator | Anaconda Navigator 是一个图形化界面工具,可以更方便地管理环境和包。 在 Navigator 中: 创建、克隆或删除环境。安装、更新或卸载包。 启动 Jupyter Notebook、Spyder 等工具。 | anaconda-navigator |
共享环境 | 导出环境,Anaconda 允许你导出和共享环境配置,方便其他人复现相同的环境。 | conda env export > environment.yml |
创建环境,根据 environment.yml 文件创建环境 | conda env create -f environment.yml |
● Conda命令相关问题
python显示不对
- 如果你已经安装了独立的 Python 解释器,并且在命令行中运行 python --version 时显示的版本不是 Anaconda 中的 Python 版本,这是因为系统的环境变量(PATH)优先指向了独立安装的 Python
(解决) 临时使用:通过 conda activate base 激活 Anaconda 环境。 永久使用:修改系统环境变量,将 Anaconda 的路径放在独立 Python 之前(位置会影响优先级)。 直接运行:使用 Anaconda 的 Python 绝对路径。 Windows 专属:使用 Anaconda Prompt。
激活环境的报错
CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.
If using ‘conda activate’ from a batch sc
- 原因:安装 Anaconda 时未正确初始化 shell,导致conda activate命令无法识别。
步骤 1:初始化 conda (Windows (命令提示符或 PowerShell)) conda init cmd.exe # 或 conda init powershell步骤 2:重启终端 关闭当前终端窗口,重新打开新的终端。
🍂Conda从哪里下载依赖
在Anaconda中,不同环境安装相同的库是否会重复下载,取决于以下机制:
● 1.包下载与缓存
-
缓存机制:
conda会将下载的包存储在全局缓存目录(如~/.conda/pkgs
或C:\Users\用户名\.conda\pkgs
)。
若不同环境安装相同版本的库,conda会优先从缓存中读取,不会重复下载。 -
安装路径:
每个环境的库会独立安装到各自的envs/环境名/lib/pythonX.Y/site-packages
目录下。
因此,存储空间会被重复占用,即使库版本相同。
● 2.平台/版本差异
- 依赖冲突:
若不同环境的Python版本或系统架构不同,相同库可能需要不同版本(如numpy-1.24.0-py310
vsnumpy-1.24.0-py39
),此时conda会强制下载新包。
● 3.节省空间的方法
-
使用硬链接(仅限Linux/macOS):
conda默认在Linux/macOS中使用硬链接共享包文件,减少实际占用空间。
Windows需通过conda config --set hardlink_conda_packages true
手动开启(需管理员权限)。 -
清理缓存:
运行conda clean -i -t 10
删除未使用的缓存包(保留最近10天的缓存)。 -
共享环境目录:
修改.condarc
文件中的envs_dirs
参数,将多个环境指向同一目录(需谨慎操作,可能导致环境冲突)。
● 总结
- 下载行为:相同库不会重复下载(依赖缓存)。
- 存储占用:不同环境会独立存储库文件,导致空间重复。
- 优化建议:
- 优先使用Linux/macOS的硬链接功能。
- 定期清理缓存。
- 避免在不同环境中安装相同版本的库。
🌿使用Anaconda的项目工作流程
配置好了虚拟环境就激活,然后打开项目,在这个环境下运行,运行完关闭环境
🍂环境和项目的独立性
Anaconda只是提供了管理相关环境的功能,而项目运行需要环境的支持,两者不是绑定的,即两者存储位置完全无关联。所以建好了环境后,CMD打开项目点运行。
🍂完整步骤
- 新建/激活环境:
- 新建:conda create -n my_env python=3.9
- 激活:conda activate 环境名称
- 验证环境已激活:
- 查看终端提示符:应显示 (环境名称) 前缀
- 检查 Python 路径(which python # Linux/macOS、where python # Windows)
- 运行项目
- 进入项目目录:cd /path/to/your_project
- 运行项目(示例):python main.py
- 关闭环境(conda deactivate)
🍂项目环境共享(即生成环境配置文件)
- 生成环境配置文件:conda env export > environment.yml(将当前环境的配置导出为一个 .yml 文件,方便共享和复现环境。)
- 共享环境配置文件:将生成的 environment.yml 文件发送给其他开发者或团队成
- 环境复现:conda env create -f environment.yml(该命令会自动安装文件中指定的 Python 版本和依赖包)
- 更新环境配置文件:conda env export > environment.yml(如果环境发生了变化(如安装了新包),可以重新导出配置文件)