conda入门

目录

  • 1. Conda 是什么?
  • 2. 为什么需要 Conda?它能解决什么问题?
  • 3. Conda 的核心组件和概念
  • 4. Conda 基本工作流程和常用命令
  • 5. Conda 的主要优势
  • 6. Conda 与 Pip 的关系
  • 7. 何时使用 Conda?

1. Conda 是什么?

  • 包管理器:
    类似于 Python 的 pip、Linux 的 apt/yum,或 macOS 的 Homebrew。它允许你轻松地查找、安装、更新和卸载软件包(库、工具等)。
  • 环境管理器:
    这是 Conda 最强大的特性之一。它允许你创建相互隔离的独立环境。每个环境可以拥有自己特定版本的 Python、软件包及其依赖项。
  • 跨平台:
    支持 Windows, macOS, Linux 等主流操作系统。
  • 语言无关:
    虽然最初是为 Python 设计,但 Conda 可以管理任何语言的软件包(如 R, C, C++, Java 库等)。

2. 为什么需要 Conda?它能解决什么问题?

  • 依赖地狱:
    不同的项目可能需要同一个包的不同版本(比如项目 A 需要 numpy 1.18,项目 B 需要 numpy 1.22)。直接在系统上安装会冲突。
  • Python 版本冲突:
    不同的项目可能需要不同版本的 Python(如 Python 3.7 vs Python 3.10)。
  • 环境隔离:
    确保项目的依赖项完全独立,避免相互干扰,提高可复现性。
  • 简化复杂包的安装:
    许多科学计算包(如 NumPy, SciPy, Pandas, Matplotlib, TensorFlow, PyTorch)依赖于底层的 C/C++/Fortran 库,手动编译安装非常复杂且容易出错。Conda 提供了预编译好的二进制包(包括这些底层依赖),大大简化了安装过程。
  • 跨平台一致性:
    在 Windows 上安装科学计算包尤其困难,Conda 解决了这个问题,使得在不同操作系统上获得一致的开发环境变得容易。

3. Conda 的核心组件和概念

  • Conda 命令行工具:
    这是你与 Conda 交互的主要方式(命令如 conda install, conda create, conda list 等)。
  • 包:
    包含软件(库、可执行文件、文档等)及其元数据(名称、版本、依赖项等)的文件集合。Conda 包通常存储在 .tar.bz2 文件中。
  • 通道:
    Conda 包从哪里下载的仓库。默认通道是 defaults(由 Anaconda, Inc. 维护)。社区维护的通道最著名的是 conda-forge,它通常提供更新更快、包种类更丰富的软件。你可以添加多个通道。
    conda-forge:一个庞大且活跃的社区驱动通道,通常是获取最新软件包的首选。
    bioconda:专注于生物信息学软件。
  • 环境:
    一个独立的目录,包含特定版本的 Python、安装的包及其依赖项。激活一个环境后,你的命令行操作(运行 python 或相关工具)将使用该环境中的软件。
  • environment.yml 文件:
    一个 YAML 文件,用于精确地定义环境所需的包和版本。这使得在不同机器之间或与他人共享和复现环境变得极其简单。
  • Anaconda vs Miniconda:
    Anaconda: 是一个完整的科学计算发行版,预装了超过 1500 个常用的科学计算、数据分析和机器学习相关的包(包括 Conda 本身、Python、Jupyter Notebook、Spyder IDE 等)。体积较大(约 3GB),适合开箱即用,不想一个个手动安装主要包的用户。
  • Miniconda:
    是 Anaconda 的精简版。它只包含 Conda、Python 和少量核心依赖包。体积很小(约 50MB)。你需要手动安装你需要的任何其他包。推荐给大多数用户,因为它更轻量、更灵活,你可以按需构建环境。

4. Conda 基本工作流程和常用命令

  • 安装 Conda:
    从 Anaconda 或 Miniconda 官网下载对应系统的安装程序并安装。安装完成后,你的命令行(终端、命令提示符、Anaconda Prompt)就可以使用 conda 命令了。
  • 创建新环境:
conda create --name myenv python=3.9 # 创建一个名为 `myenv` 的环境,并指定安装 Python 3.9
  • 激活环境:

Windows: conda activate myenv
macOS/Linux: conda activate myenv (或旧版本可能需要 source activate myenv)

  • 在环境中安装包: (激活环境后)
conda install numpy pandas matplotlib # 安装多个包
conda install scikit-learn=1.0 # 安装特定版本
conda install -c conda-forge tensorflow # 从特定通道 (conda-forge) 安装包
  • 列出环境中的包:
conda list
  • 更新包:
conda update numpy # 更新特定包
conda update --all # 更新环境中所有包到最新兼容版本
  • 卸载包:
conda remove numpy
  • 停用环境:
conda deactivate
  • 列出所有环境:
conda env list
  • 删除环境:
conda env remove --name myenv
  • 导出环境配置 (用于共享/复现):
conda env export > environment.yml # 导出当前激活环境的精确配置(包括所有依赖项和精确版本号)
# 或者(更推荐,只包含你明确指定的包,允许自动解决依赖)
conda env export --from-history > environment.yml
  • 从 environment.yml 文件创建环境:
conda env create -f environment.yml

5. Conda 的主要优势

  • 强大的环境隔离:
    核心优势,彻底解决依赖冲突问题。
  • 简化复杂包安装:
    预编译的二进制包节省大量时间和精力,尤其在 Windows 上。
  • 跨平台:
    在 Windows/macOS/Linux 上提供一致的体验。
  • 包丰富:
    通过默认通道和社区通道(如 conda-forge)提供海量的软件包(不仅仅是 Python 包)。
  • 可复现性:
    environment.yml 文件使项目环境的共享和复现变得简单可靠。
  • 活跃的社区:
    庞大的用户群体和开发者社区(尤其是 conda-forge),持续贡献和维护包。

6. Conda 与 Pip 的关系

  • 互补而非替代:
    Conda 和 Pip 都是包管理器,但它们定位略有不同。
  • Conda:
    管理环境和跨语言的包(包括 Python 解释器本身、Python 包以及非 Python 的二进制依赖库)。
  • Pip:
    专门用于安装和管理 Python 包(来自 PyPI),但它不管理环境(需要依赖 venv 或 virtualenv 创建隔离环境),也不管理 Python 解释器本身或非 Python 的底层依赖。
  • 在 Conda 环境中使用 Pip:
    通常建议在 Conda 环境中优先使用 conda install。如果某个包在 Conda 通道中不可用,可以在激活的 Conda 环境中运行 pip install。Conda 通常能很好地处理由此安装的 Python 包,但要小心潜在的依赖冲突(因为 Pip 不感知 Conda 管理的非 Python 依赖)。最好将 Pip 安装的包记录在 environment.yml 中(使用 pip 部分)。

7. 何时使用 Conda?

  • 你需要管理多个项目,这些项目需要不同的 Python 版本或包版本。
  • 你主要在科学计算、数据分析、机器学习领域工作。
  • 你在 Windows 上工作,需要安装包含复杂底层依赖的包(如 NumPy, SciPy, TensorFlow, PyTorch)。
  • 你需要确保项目的环境可以精确地被他人或未来的自己复现。
  • 你需要安装非 Python 的软件(如 R 包、命令行工具)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误

提问 UE5报错如图。解析原因 回答 你遇到的这个错误提示是: “Out of video memory trying to allocate a rendering resource. Make sure your video card has the minimum required memory, try lowering the resolution and/or closing other applications tha…

第七十三篇 从电影院售票到停车场计数:生活场景解析Java原子类精髓

目录 一、原子类基础:电影院售票系统1.1 传统售票的并发问题1.2 原子类解决方案 二、原子类家族:超市收银系统2.1 基础类型原子类2.2 数组类型原子类 三、CAS机制深度解析:停车场管理系统3.1 CAS工作原理3.2 车位计数器实现 四、高性能实践&a…

Linux(线程控制)

一 线程的操作 1. 创建线程:pthread_create int pthread_create(pthread_t *thread, // 线程 idconst pthread_attr_t *attr, // 线程属性设置void *(*start_routine) (void *), // 回调函数void *arg // 传递…

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式 文章目录 PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式1. 查询效果2. 处理方式3. 再次查询 1. 查询效果 2. 处理方式 3. 再次查询

centos 9/ubuntu 一次性的定时关机

方法一 # 15 表示15分钟以后自动关机 sudo shutdown -h 15方法二: sudo dnf install at -y # 晚上十点半关机 echo "shutdown -h now" | at 22:30 # 检查是否设置成功命令 atq [rootdemo-192 ~]# atq 1 Wed Jun 4 11:12:00 2025 a root # 取消定时计划…

Riverpod与GetX的优缺点对比

Riverpod 与 GetX 的优缺点对比 在 Flutter 开发领域,Riverpod 和 GetX 都是备受关注的状态管理与依赖注入框架,它们各有优劣,适用于不同的开发场景。以下从多个维度详细对比二者的优缺点。 一、Riverpod 的优缺点 (一)优点 架构清晰,数据流向明确:基于 Provider 模…

day 47

注意力可视化 训练模型 包含通道注意力模块和CNN模型的定义(通道注意力的插入) import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import ma…

《Vuejs设计与实现》第 8 章(挂载与更新)

目录 8.1 挂载子节点与属性 8.2 HTML Attributes 与 DOM Properties 8.3 设置元素属性的正确方式 8.4 处理 class 属性 8.5 卸载操作 8.6 区分 vnode 类型 8.7 事件处理优化 8.8 事件冒泡与更新时机问题 8.9 子节点的更新 8.10 文本节点和注释节点 8.11 片段&#xf…

自制操作系统(五、重写引导部分和C语言的使用)

为了实现其他更多功能,我决定重新写引导部分的内容 boot.asm ; boot.asm %include "config.inc"setuplen equ 4 bootseg equ 0x07c0 initseg equ def_initseg setupseg equ def_setupseg sysseg equ def_syssegsetupsector equ 2 syssector equ setupse…

口罩佩戴检测算法AI智能分析网关V4工厂/工业等多场景守护公共卫生安全

一、引言​ 在公共卫生安全日益受到重视的当下,口罩佩戴成为预防病毒传播、保障人员健康的重要措施。为了高效、精准地实现对人员口罩佩戴情况的监测,AI智能分析网关V4口罩检测方案应运而生。该方案依托先进的人工智能技术与强大的硬件性能,…

【评测】用Flux的图片文本修改的PS效果

【评测】Flux的图片文本修改的PS效果 1. 百度图库找一张有英文的图片 2. 打开https://playground.bfl.ai/image/edit上传图片 3. 输入提示词 “change brarfant to goodbeer” 图片的文字被修改了

【汇编逆向系列】三、函数调用包含单个参数之float类型-xmm0寄存器,sub,rep,stos,movss,mulss,addss指令

一、汇编代码 single_float_param:0000000000000060: F3 0F 11 44 24 08 movss dword ptr [rsp8],xmm00000000000000066: 57 push rdi0000000000000067: 48 83 EC 10 sub rsp,10h000000000000006B: 48 8B FC mov …

深入了解UDP套接字:构建高效网络通信

个人主页:chian-ocean 文章专栏-NET 深入了解UDP套接字:构建高效网络通信 个人主页:chian-ocean文章专栏-NET 前言:UDPUDP 特点:UDP的应用 套接字地址IP地址(Internet Protocol Address)IP地址…

C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、初识文件加密:为什么需要…

Qt/C++学习系列之Excel使用记录

Qt/C学习系列之Excel使用记录 前言The process was ended forcefully.解决方式断点查语句问题 总结 前言 在项目中解析条目达50多条,并且都需要将对应的结果进行显示。为了将结果显示的更加清晰,考虑采用QTableWidget进行表格设置,而在使用过…

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…

并发编程实战(生产者消费者模型)

在并发编程中使用生产者和消费者模式能够解决绝大多数的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 生产者和消费者模式: 在线程的世界中生产者就是产生数据的线程,而消费者则是消费数据的线程。在多线程开…

力扣hot100---152.乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例 1: 输入: nums [2,3,-2,4] 输出:6解释: 子数组 [2,3] 有最…

什么是DevOps智能平台的核心功能?

在数字化转型的浪潮中,DevOps智能平台已成为企业提升研发效能、加速产品迭代的核心工具。然而,许多人对“DevOps智能平台”的理解仍停留在“自动化工具链”的表层概念。今天,我们从一个真实场景切入:假设你是某互联网公司的技术负…

柯尼卡美能达Konica Minolta bizhub 205i打印机信息

基本参数 产品类型:激光数码复合机颜色类型:黑白涵盖功能:复印、打印、扫描最大原稿尺寸:A3内存容量:256MB供纸容量:标配 350 页,最大 1350 页介质重量:标准纸盒 64-157g/㎡&#xf…