当前位置: 首页 > news >正文

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 NavigatorAnaconda 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/pkgsC:\Users\用户名\.conda\pkgs)。
    若不同环境安装相同版本的库,conda会优先从缓存中读取,不会重复下载

  • 安装路径
    每个环境的库会独立安装到各自的envs/环境名/lib/pythonX.Y/site-packages目录下。
    因此,存储空间会被重复占用,即使库版本相同。

● 2.平台/版本差异

  • 依赖冲突
    若不同环境的Python版本或系统架构不同,相同库可能需要不同版本(如numpy-1.24.0-py310 vs numpy-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(如果环境发生了变化(如安装了新包),可以重新导出配置文件)

相关文章:

  • Java 中的数据类型误导点!!!
  • [Spring AOP 7] 动态通知调用
  • OSCP - Proving Grounds - EvilBox-One
  • 《深入理解Linux网络》笔记
  • 基于语言模型的依存关系分句 和 主题变换检测(基于词频和句段得分)的 意思
  • JavaScript基础-全局作用域
  • 内存、磁盘、CPU区别,Hadoop/Spark与哪个联系密切
  • Hadoop 2.x设计理念解析
  • hot100-子串-JS
  • 17.Excel:实用的 VBA 自动化程序
  • 嵌入式Web服务器lighttpd交叉编译详解
  • 8.2.CICD自动化
  • 青藏高原七大河流源区径流深、蒸散发数据集(TPRED)
  • 远程调试---在电脑上devtools调试运行在手机上的应用
  • 在 Excel 中有效筛选重复元素
  • 365打卡第R8周: RNN实现阿尔茨海默病诊断
  • Jmeter中的Json提取器如何使用?
  • CH579 CH573 CH582 CH592 蓝牙主机(Central)实例应用讲解
  • 生产级AI/ML特征存储平台:Feast全面使用指南 — Use Cases Third party integrations FAQ
  • TransmittableThreadLocal:穿透线程边界的上下文传递艺术
  • 习近平会见缅甸领导人敏昂莱
  • 习近平向中国人民解放军仪仗队致意
  • 美乌基金协议:美国搞了一套可在资源富集地区复刻的商业模式
  • 美联储宣布维持联邦基金利率目标区间不变
  • 加拿大总理访美与特朗普“礼貌交火”
  • 为什么有的人闻到烟味,会咳嗽、胸闷?别再伤害身边的人