pip和conda的环境管理,二者到底应该如何使用

news2024/11/19 21:25:20

https://www.bilibili.com/read/cv26308572/?spm_id_from=444.41.list.card_opus.click
关于pip与conda是否能混用的问题,Anaconda官方早就给出了回答

先说结论,如果conda和pip在相同环境下掺杂使用,尤其是频繁使用这两个工具进行包的安装,可能会导致环境状态混乱

就像其他包管理器一样,大部分这些问题均源于有限的能力来管理未安装的包。通过pip安装后再运行conda,有可能覆盖或潜在地破坏通过pip安装的包。同样,pip可能会升级或删除conda安装的某个包所依赖的包

有一些步骤可以用来避免在使用conda和pip一起时出现问题的环境破坏。一个可靠的方法是只使用conda包。如果需要conda没有提供的软件包,可以使用conda build来创建。对于在PyPI上可用的项目,conda skeleton命令可以生成一个用来创建conda包的配方,几乎不需要进行修改

https://docs.conda.io/projects/conda-build/en/stable/

但如果环境涉及大量只能在PyPI上获得的包,这可能会成为负担。在这些情况下,最安全的做法是先通过conda安装所有支持的包后才使用pip安装不支持的包。此外,应该使用“–upgrade-strategy only-if-needed”参数运行pip,以防止不必要地升级通过conda安装的包。这是运行pip时的默认设置,不应更改

如果预计某项目需要混用conda与pip,最好的做法是将此安装放入一个专门的conda环境中,以保护其他环境免受pip可能会进行的任何修改,因为conda环境是独立的,允许不同版本的包存在

https://conda.io/docs/user-guide/tasks/manage-environments.html

在conda环境中,尽可能使用硬链接而不是复制文件。如果安装了相同的一组包,每个新的conda环境将只需要少量额外的磁盘空间。许多用户依赖于由安装Anaconda或Miniconda创建的“base” conda环境,如果这个环境混杂着pip和conda安装的包,将会更难恢复。另一方面,创建单独的conda环境允许随时整个删除和重新创建环境,而不会影响核心的conda功能

在conda环境中使用pip安装包时,conda并不会察觉到这些变更,并存在破坏环境的风险。一个可靠的方法是创建一个新的环境,并先通过conda安装需要的包,再运行pip。再次强调,主要问题是pip的“状态性(或关联性)”——安装包的顺序会关联更多的状态,这将使事情更难以正常工作

图片

对于经常需要重建的环境,最好的做法是将conda和pip包要求存储在文本文件中。可以通过–file参数将包要求提供给conda,通过-r或–requirement(关于requirement的一些总结其实早就写好了,一直躺在我的草稿箱中)参数提供给pip

图片

一个包含conda和pip要求的文件可以导出或通过conda env命令来控制环境。这两种方法的好处是,描述环境的文件可以方便进行版本控制以及便于他人共享环境

Anaconda非常清楚结合pip和conda可能会遇到的困难。我们希望设置数据科学环境的过程尽可能简单。这就是为什么我们一直在向conda的下一个版本添加新功能,以简化这个过程。虽然还处于测试阶段,但conda 4.6.0允许conda考虑pip安装的包,并根据需要替换这些包或满足现有包的依赖关系。我们仍在测试这些新功能,但预计在不久的将来,conda和pip之间的交互将得到很大改善。

总结

在使用conda后再使用pip

  • 使用conda尽可能多地先安装支持的包,再使用pip

  • 使用“–upgrade-strategy only-if-needed”(默认设置)运行pip

  • 不要使用“–user”参数,避免所有“用户”安装

使用conda进行环境隔离

  • 创建一个conda环境来隔离pip所做的任何更改

  • 由于硬链接特性,不同环境下重复安装包不会复制文件,环境所占空间很小

  • 应注意避免在默认的 conda 环境下(如base)运行 pip

如果需要对环境进行更改,请重新创建环境

  • 一旦在conda环境中使用pip安装包,conda无法定位环境发生变更

  • 要安装额外的conda包,最好重新创建环境

将conda和pip相关的包要求以文本文件形式存储

  • 通过–file参数将包要求提供给conda

  • 通过-r或–requirement参数提供给pip

  • conda env将基于包含conda和pip需求的文件导出或创建环境

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

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

相关文章

Python开发手册 — 有勇气的牛排

前言 一、编程规约 二、异常日志 三、单元测试 四、安全规约 4.1 【强制】用户页面/功能进行权限校验 隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平校验就可随意访问、修改、删除别人的数据,比如查看那他人的私信内容…

浅析Open vSwitch数据结构:哈希表hmap/smap/shash

文章目录 概述hmaphmap数据结构初始化hmap插入节点扩展hmap空间resize函数 删除节点遍历所有节点辅助函数hmap_first辅助函数hmap_next smapsmap数据结构插入节点删除节点查找节点遍历所有节点 shashshash数据结构插入节点删除节点查找节点遍历所有节点 概述 在OVS软件中&…

卡尔曼滤波公式推导(总结)

假设 小车在t时刻的初始状态可以用Pt(当前位置),Vt(当前速度),Ut表示加速度: 预测: 利用上一个时刻的旧状态和系统的动量模型(如加速度,速度等)…

Android逆向——脱壳解析

“壳”是一种对程序进行加密的程序,“壳”形象地表现了这个功能。我们可以把被加壳的程序当成食物,而加壳程序就是在外面加上一层坚硬的外壳,防止别人去窃取其中的程序。加壳后的程序依然可以被直接运行。在程序运行时壳的代码先运行&#xf…

修改hosts文件无权限解决办法

文章目录 一、问题描述二、解决办法 一、问题描述 当我们在hosts文件中添加内容后----->点击文件右上角X按钮---->点击保存 系统会弹出我们没有权限的问题 二、解决办法 在搜索栏中搜索cmd---->右键命令提示符---->点击以管理员身份运行 输入cd C:\Windows\Sy…

文件上传漏洞(CVE-2022-30887)

简介 多语言药房管理系统(MPMS)是用PHP和MySQL开发的,该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库,并根据到期、产品等各种参数提供各种报告…

OpenMMLab MMYOLO目标检测环境搭建(一)

1、环境搭建 conda create -n mmyolo python3.7 -y #创建环境 conda activate mmyolo #激活环境 conda install pytorch torchvision torchaudio cudatoolkit10.2 -c pytorch #安装 PyTorch and torchvision (官方)#如果网不好,可以这样安装 pi…

KNN算法回归问题介绍和实现

上篇博客中,介绍了使用KNN算法实现分类问题,本篇文章介绍使用KNN算法实现回归问题。介绍思路是先使用sklearn包提供的方法实现一个KNN算法的回归问题。再自定义实现一个KNN算法的回归问题工具类。 一、sklearn包使用KNN算法 1. 准备数据 使用sklearn包…

【C++基础】观察者模式(“发布-订阅”模式)

本文参考:观察者模式 - 摩根斯 | 爱编程的大丙 观察者模式允许我们定义一种订阅机制,可在对象事件发生时通知所有的观察者对象,使它们能够自动更新。观察者模式还有另外一个名字叫做“发布-订阅”模式。 发布者: 添加订阅者&…

【数据关联(1)】Tracking-by-detection 多目标跟踪范式与“数据关联”的关系说明

这个领域有一些专有名词需要大家清楚! 文章目录 1 Tracking-by-detection multi-object tracking(MOT) 范式跟踪器是什么?1.1 关系图(个人理解,如有错误请指正)1.2 跟踪器有哪些? 2、核心部分“数据关联”…

Python格式化字符串(格式化输出)

print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 pri…

SegNetr: 重新思考 U 形网络中的局部-全局交互和跳过连接

SegNetr 会议分析摘要贡献方法整体框架1. SegNetr Block2.Information Retention Skip Connection 实验1.对比实验2.消融实验2.1 Effect of local-global interactions.2.2 Effect of patch size2.3 Effect of IRSC 可借鉴参考 会议分析 论文出处: arXiv预印版 除了…

C++在C语言基础上的优化

目录 一、命名空间 1、命名空间的定义 2、命名空间的使用 二、输入&输出 三、缺省参数 1、缺省参数的概念 2、缺省参数的分类 四、函数重载 五、引用 1.引用的概念 2.引用的特性 3、引用和指针的区别 六、内联函数 七、基于范围的for循环 一、命名空间 命名空…

计算机网络第六章——应用层(下)

等闲变却故人心,却道故人心易变 文章目录 用户代理就是用户和电子邮件系统之间的一个接口,通常都是运行在电脑中的一个程序,用户代理又可以称为电子邮件客户端软件,用户代理可以为用户提供一个比较友好的接口,邮件服务…

详解初阶数据结构之顺序表(SeqList)——单文件实现SeqList的增删查改

目录 一、线性表 二、顺序表 2.1概念及结构 2.2接口实现 2.3动态顺序表的创建 2.3动态顺序表的初始化 2.3.1传值初始化 2.3.2传址初始化 2.4动态顺序表的清空 2.5动态顺序表的扩容 2.6动态顺序表内容的打印 三、动态顺序表的使用 3.1尾插尾删 3.1.1尾插 3.1.2尾删…

集合框架和泛型二

一、Set接口 1. Set接口概述 java.util.Set 不包含重复元素的集合、不能保证存储的顺序、只允许有一个 null。 public interface Set<E> extends Collection<E>抽象方法&#xff0c;都是继承自 java.util.Collection 接口。 Set 集合的实现类有很多&#xff0c;…

分布式AKF拆分原则

目录 1 前言2 什么是AKF3 如何基于 AKF X 轴扩展系统&#xff1f;4 如何基于 AKF Y 轴扩展系统&#xff1f;5 如何基于 AKF Z 轴扩展系统&#xff1f;6 小结 1 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1…

网络安全(黑客)技术自学

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

高忆管理:突破22万亿!五大保险巨头总资产创历史新高

阅历了几年深度转型的稳妥业正在冲破迷雾。 券商我国记者统计显现&#xff0c;本年上半年&#xff0c;我国人寿、我国人保、我国安全、我国太保、新华稳妥等五大A股上市险企总财物破22万亿元&#xff0c;半年度营收1.5万亿元。从3至5年中长周期来看&#xff0c;稳妥集团公司体…

【大数据】Kafka 入门指南

Kafka 入门指南 1.Kafka 简介2.Kafka 架构3.分区与副本4.偏移量5.消费者组6.总结 1.Kafka 简介 Apache Kafka 是一种高吞吐、分布式的流处理平台&#xff0c;由 LinkedIn 开发并于 2011 年开源。它具有 高伸缩性、高可靠性 和 低延迟 等特点&#xff0c;因此在大型数据处理场景…