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

conda常用命令pip、venv

文章目录

    • 常用命令
    • 其他命令
    • 其他
      • Conda & pip
      • Python venv
        • 核心命令与步骤
        • venv & Conda

常用命令

类别命令说明示例
环境管理conda create -n myenv创建新环境conda create -n myproject python=3.9
conda activate myenv激活进入某个环境conda activate myproject
conda deactivate退出当前环境conda deactivate
conda env list列出所有已创建的环境conda env list
conda remove -n myenv --all删除整个环境conda remove -n oldproject --all
conda create -n new_env --clone old_env克隆一个现有环境conda create -n proj_backup --clone myproject
包管理conda install numpy在当前环境安装conda install pandas matplotlib
conda install numpy=1.21安装指定版本的包conda install tensorflow=2.10
conda list列出当前环境所有已安装的包conda list
conda update numpy更新某个包conda update scikit-learn
conda update --all更新当前环境所有conda update --all
conda remove numpy从当前环境卸载一个包conda remove scrapy
conda search tensorflow搜索包,查看可用版本conda search pytorch
频道管理conda install -c conda-forge package特定频道安装包conda install -c conda-forge opencv
conda config --add channels url添加频道conda config --add channels conda-forge
conda config --show channels显示当前配置的频道conda config --show channels
导入导出conda env export > environment.yml导出当前环境到文件conda env export > environment.yml
conda env create -f environment.yml根据文件创建环境conda env create -f environment.yml

其他命令

表格中的命令足以应对大部分场景,但掌握下面几个技巧能让你的工作流更加顺畅:

  • 使用 conda-forge 频道:这是一个社区驱动的频道,包版本通常更新、更全。建议将其设置为最高优先级。

    conda config --add channels conda-forge
    conda config --set channel_priority strict
    
  • 导出精准的环境文件:直接使用 conda env export 导出的环境文件会包含大量底层依赖,可能不利于跨平台复用。推荐使用 --from-history 参数,它只导出你明确安装的包,使得环境文件更简洁。

    conda env export --from-history > environment.yml
    
  • 与 Pip 协同工作:如果某个包在 Conda 中找不到,可以在 Conda 环境中使用 Pip 安装。但为了减少依赖冲突,最好遵循 “先Conda,后Pip” 的原则。

    conda install numpy pip  # 先通过conda安装
    pip install some-package-not-in-conda  # 再用pip安装
    
  • 清理缓存以释放空间:定期清理Conda的缓存包是个好习惯。

    conda clean --all
    

其他

conda国内镜像
若下载速度慢,可修改 Conda 配置文件 .condarc,添加清华镜像源加速:

channels:- defaults
show_channel_urls: true
default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudnvidia: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

修改后重启终端,安装命令不变,下载速度可提升 3-5 倍。

Conda & pip

关键原则推荐做法需要避免的情况
使用顺序先使用 Conda 安装尽可能多的包,再使用 Pip 安装 Conda 中没有的包不要在同一个环境里频繁交替、随机使用 Conda 和 Pip
环境隔离为需要混用 Conda 和 Pip 的项目创建独立的虚拟环境避免在 Anaconda/Miniconda 的 base 基础环境中使用 Pip
Pip 配置保持 Pip 的默认升级策略 --upgrade-strategy only-if-needed不要使用 pip --user 在用户目录安装包
环境重建如果后续需要安装新的 Conda 包,考虑重新创建环境,因为 Conda 可能无法完全感知 Pip 安装带来的变更不要在一个"混乱"的环境里反复修补

使用原则:

  • 顺序是关键:像调制鸡尾酒一样,先 Conda,后 Pip。这个顺序能最大程度减少混乱。
  • 隔离是保障:为每个项目创建独立的虚拟环境,这是混用 Conda 和 Pip 时的安全实验场。
  • 重建好过修补:当环境因后续安装变得复杂时,重新创建环境往往比花费大量时间排查依赖冲突更高效。
  1. 恪守「Conda优先」的使用顺序
  • 为什么? Conda 和 Pip 处理依赖关系的方式有根本不同。Conda 在安装包时会使用一个“求解器”来验证环境中所有包的依赖关系是否都能同时满足,这有助于创建一个稳定的环境。而 Pip 是按顺序安装依赖的,这可能导致后来安装的包破坏先前包的依赖。
  • 怎么做? 首先尝试用 Conda(包括 conda-forge 等社区频道)安装你需要的包。只有当 Conda 无法提供某个包时,再求助于 Pip。
  1. 创建专用的虚拟环境
  • 为什么? 将可能出现的依赖冲突隔离在项目专用的环境中,不会影响其他项目或基础的 Conda 环境。这样即使环境损坏,也可以轻松删除重建。
  • 怎么做?
    # 创建新环境并指定Python版本
    conda create -n my_project python=3.9
    conda activate my_project
    
    在此之后,再在这个 my_project 环境里遵循「Conda优先」的原则安装包。
  1. 确保使用环境内的 Pip
  • 为什么? 系统可能存在多个 Pip,如果误用了环境外的 Pip,包会被安装到错误的位置,导致环境混乱。
  • 怎么做? 激活环境后,使用 which pip(Linux/macOS)或 where pip(Windows)命令检查,确保输出的路径包含当前环境名,如 .../envs/my_project/bin/pip
    一个更稳妥的方法是使用 Python 模块方式运行 Pip:
    python -m pip install <包名>
    
    这种方式能确保使用的是当前环境下的 Python 对应的 Pip。
  1. 使用环境文件重现环境
  • 为什么? 为了确保你的项目环境(包括所有依赖)能被你本人或他人准确复现,最好将环境导出为文件。
  • 怎么做?
    1. 导出既包含 Conda 包也包含 Pip 包的环境文件:
      conda env export > environment.yml
      
      导出的 environment.yml 文件会列出所有包及其精确版本,包括通过 Pip 安装的包。
    2. 其他人拿到这个文件后,可以一键创建相同的环境:
      conda env create -f environment.yml
      

Python venv

venv 是 Python 官方推荐的环境管理工具,从 Python 3.3 开始成为标准库的一部分。它的核心思想是创建一个轻量级的、独立的 Python 环境,这个环境拥有自己的 python 解释器、pip 安装工具和独立的第三方包安装目录。

核心命令与步骤
步骤命令说明
1. 创建环境python -m venv /path/to/new/virtual/environment创建一个新的虚拟环境。通常命名为 venv.venv
2. 激活环境Windows (CMD/PowerShell):
venv\Scripts\activate

macOS / Linux (Bash):
source venv/bin/activate
激活环境后,命令行提示符通常会显示环境名。此后所有 pythonpip 命令都只在该环境中生效。
3. 安装包pip install requests numpy在激活的环境中使用 pip 安装所需包。
4. 停用环境deactivate退出当前虚拟环境,回到系统全局环境。
5. 删除环境直接删除整个环境文件夹即可。例如 rm -rf venv (Linux/macOS) 或 rmdir /s venv (Windows)。

示例:

# 1. 在项目根目录下创建名为 'venv' 的环境
python -m venv venv# 2. 激活环境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate# 3. 确认 Python 解释器位置
which python  # 输出应为:/path/to/your/project/venv/bin/python# 4. 安装包
pip install flask pandas# 5. 导出环境依赖(在激活环境下)
pip freeze > requirements.txt# 6. 停用环境
deactivate

requirements.txt 恢复环境:

# 创建并激活新环境后
pip install -r requirements.txt
venv & Conda

Conda 和 venv 是不同层级的环境管理工具,通常不建议在同一个项目目录中同时使用它们(比如在 Conda 环境内部再创建 venv),因为这会造成依赖管理的混乱。
结合策略的核心思想是:利用 Conda 管理复杂的、非 Python 的依赖和特定的 Python 版本;利用 venv 的纯粹和标准化来锁定最终的项目依赖。


  • 策略一:使用 Conda 创建 Python 解释器,用 venv 管理项目依赖

这是最实用的一种结合方式。当项目需要一个 Conda 来管理的特定 Python 版本,或者依赖某个通过 Conda 才能方便安装的复杂库(如科学计算栈、PyTorch/TensorFlow 等)时,可以采用此策略。

工作流程:

  1. 用 Conda 创建“基础”环境:创建一个包含特定 Python 版本和复杂依赖的 Conda 环境。
  2. 在此环境中创建 venv:利用这个 Conda 环境中的 python 解释器,为你的具体项目创建一个纯净的 venv
  3. venv 中开发:所有项目特定的、纯 Python 的依赖都通过 venv 环境中的 pip 来安装和管理。

示例: 当需要一个包含 PyTorch 和特定 Python 版本的环境来进行机器学习项目。

# 1. 使用 Conda 创建一个包含 Python 和 PyTorch 的环境
conda create -n my_conda_env python=3.9 pytorch torchvision torchaudio cpuonly -c pytorch
conda activate my_conda_env# 2. 进入你的项目目录
cd /path/to/my_project# 3. 使用 Conda 环境中的 Python 解释器来创建一个 venv
python -m venv venv# 4. 激活项目自己的 venv(注意:此时你已“脱离”Conda环境,进入了更轻量的venv)
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate# 5. 现在,你的 Python 来自 Conda 环境(包含PyTorch),但 pip 指向的是纯净的 venv。
# 你可以安装项目其他依赖,它们不会污染上层的 Conda 环境。
pip install requests matplotlib jupyter# 6. 导出依赖时,只导出你在 venv 中安装的包,非常干净。
pip freeze > requirements.txt

策略一所推荐的嵌套(清晰的层级依赖及项目管理):

Conda环境 (my_conda_env) - 【角色:基础解释器与核心库提供商】├── Python 3.9└── PyTorch (通过Conda安装,包含其复杂的C++依赖)
项目venv (./venv) - 【角色:纯净的`项目依赖管理器`】├── Python解释器 -> 符号链接指向 ../my_conda_env/bin/python└── 所有项目包 (通过pip安装)├── requests├── matplotlib└── jupyter
  • 核心思想:在这个结构里,上层的Conda环境仅仅充当了一个“Python解释器和核心基础库的提供者”,而venv相当于一个完整的项目管理环境。当激活项目的venv后,并不是在同时使用两个环境管理器。你只是在用一个由Conda提供的、干净的Python解释器来运行一个标准的venv

  • 依赖流向是单向的:项目venv中的pip不会去修改上层Conda环境中的任何包。它只在自己的site-packages目录里安装包。当你pip freeze时,得到的requirements.txt不包含PyTorch等由Conda安装的底层包,只包含你在项目层面明确安装的包,因此非常干净。

  • 依赖清晰requirements.txt 只包含你明确为项目安装的包,不包含 Conda 安装的大量底层依赖。

  • 环境纯净:项目环境独立于 Conda 环境,避免了在 Conda 环境内直接使用 pip 可能造成的依赖冲突。

  • 易于重现:其他人只需先准备好相同的 Conda 基础环境,然后用你的 requirements.txt 即可复现项目环境。


策略二:根据场景选择工具


这是一种更简单直接的结合方式,无需嵌套,根据项目需求选择其一。

场景推荐工具理由
数据科学、机器学习项目Conda依赖复杂的科学计算库(NumPy, SciPy, Pandas)、框架(PyTorch, TensorFlow)或需要特定版本的 Python。Conda 能很好地处理这些包及其非 Python 依赖。
Web 开发、纯 Python 库开发venv依赖大多是纯 Python 包,可以从 PyPI 直接获取。venv 更轻量、启动更快,且生成的 requirements.txt 是行业标准。
需要隔离系统 Pythonvenv在不允许修改系统 Python 的环境中,venv 是最安全、最标准的选择。
混合语言项目Conda项目依赖不仅限于 Python,还涉及 R、C/C++ 库等,Conda 是跨语言的包管理器。
  1. 不要嵌套使用:避免在激活的 Conda 环境内再创建和激活 venv,反之亦然。这会导致路径混乱。不推荐的嵌套(混乱的依赖混合):
    Conda环境 (env_A)├── 通过Conda安装了包 numpy, requests└── 内部激活了 venv└── 又通过pip安装了包 pandas, flask
    
    • 问题:无法清晰界定一个包(比如requests)到底应该由Conda管理还是由pip管理。Conda的求解器无法感知venv内pip安装的包,可能导致无法解决的依赖冲突。整个环境的依赖关系是一团乱麻。
  2. 明确分工
    • Conda:擅长管理 Python 解释器本身、数据科学栈、有复杂非 Python 依赖的包
    • venv:擅长管理 纯 Python 项目的依赖,生成干净、标准的依赖列表。
  3. 推荐的混合策略:对于复杂项目,采用 策略一。先用 Conda 搭建一个包含“重型”依赖的基础,然后在这个基础上用 venv 为你的具体项目创建一个纯净的、可复现的依赖空间。
  4. 简单项目:如果是纯 Python 项目,直接使用 venv 就足够了,无需引入 Conda。
http://www.dtcms.com/a/490817.html

相关文章:

  • Visual Studio 2022查看程序变量和堆栈
  • RabbitMQ消息传输中Protostuff序列化数据异常的深度解析与解决方案
  • SSH连接服务器超时?可能原因与解决方案
  • iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
  • Visual Studio下的内存安全检测:CRT 内存泄漏 AddressSanitizer
  • iOS混淆与IPA文件加固深度解析,从反编译风险到苹果应用安全工程实践
  • 眉山建设中等职业技术学校 网站公司网页制作费用大概要多少钱?
  • 张店网站制作首选专家计算机大专生的出路
  • 万网的网站建设广州互联网公司集中在哪个区
  • 数据安全系列7:常用的非对称算法浅析
  • uniapp微信小程序+vue3基础内容介绍~(含标签、组件生命周期、页面生命周期、条件编译(一码多用)、分包))
  • 微信小程序报错 ubepected character `的style换行问题
  • H5封装打包小程序助手抖音快手微信小程序看广告流量主开源
  • 金华建设局网站做爰片在线看网站
  • 如何做二维码链接网站虚拟空间的网站赚钱吗
  • 营业部绩效考核方案与管理方法
  • 光刻刻蚀工艺控制要点及材料技术进展与限制
  • VPS SSH密钥登录配置指南:告别密码,拥抱安全
  • 注入“侨动力” 锻造“湘非链”
  • 做网站自己申请域名还是建站公司菏泽最好的网站建设公司
  • 网站建设方面书籍温州网站建设案例
  • 【Linux】Linux 零拷贝技术全景解读:从内核到硬件的性能优化之道
  • 微软ML.NET技术详解:从数据科学到生产部署的全栈解决方案
  • 镇江网站搜索引擎优化做外贸雨伞到什么网站
  • 网站收录一般多久沈阳建设学院
  • C++ AI 编程助手
  • 编程之python基础
  • 【系统分析师】写作框架:软件设计模式及其应用
  • leetcode 2598 执行操作后最大MEX
  • GPTBots Multi-Agent架构解析:如何通过多Agent协同实现业务智能化升级