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

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.mzph.cn/news/76641.shtml

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

相关文章

提升你的Android开发技能:从AR/VR沉浸到UI设计和故障排除

文章目录 探索最新AR/VR应用在教育、游戏、医疗等领域的应用教育领域游戏领域医疗领域 深入了解Android内存管理与性能优化的方法与技巧垃圾回收机制内存泄漏使用弱引用避免过度渲染内存优化图像优化延迟加载Android中的调试技术应用程序分析 分享如何提高Android应用的易用性和…

Leetcode算法入门与数组丨1. 数据结构与算法简介

文章目录 前言1 数据结构与算法1.1 数据结构1.2 算法 2 算法复杂度2.1 算法复杂度简介2.2 时间复杂度2.3 空间复杂度 3 总结 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客以及接下来几篇将会是一个 入门型 的文章,主要是自己学习的一个…

032:vue中三元运算, style、class、type、 event等多种场景示例

第032个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

VR全景广告——实体商家的营销新选择

前几年,大家出行不便,那个时候实体商家整天苦恼于没有客户,没有销量,一直到引入VR全景广告才算是有所好转。随着VR全景技术不断完善,许多行业、领域开始结合VR全景,例如景区、房地产、车企等都会利用VR全景…

CMS-织梦[dede]-通用免登发布插件

CMS-织梦[dede]-通用免登发布插件 1. 织梦通用免登陆发布插件功能说明2. 织梦通用免登陆发布接口使用说明2-1 下载插件2-2 安装插件3 对接火车头等采集工具 3 爬虫【古诗文网】示例[可选]测试火车头入库模型 使用火车头,简数采集器,八爪鱼等文章采集工具…

构造函数注入指定bean名称

配置类 Configuration public class ThreadPoolTaskExecutorConfig {Beanpublic ThreadPoolTaskScheduler syncScheduler() {ThreadPoolTaskScheduler syncScheduler new ThreadPoolTaskScheduler();syncScheduler.setPoolSize(10);syncScheduler.setThreadGroupName("s…

智慧公厕助推城市管理智能化和治理精细化

随着城市化进程的不断加快,城市管理面临着诸多挑战和问题。而智慧公厕作为城市数字化赋能的重要一环,正成为推动城市管理智能化和治理精细化的关键力量。本文将以智慧公厕头部厂家广州中期科技有限公司,所实施大量精品案例项目的实景实图&…

【深度学习】 Python 和 NumPy 系列教程(二):Python基本数据类型:3、字符串(索引、切片、运算、格式化)

目录 一、前言 二、实验环境 三、Python基本数据类型 3. 字符串(Strings) 1. 初始化 2. 索引 3. 切片 4. 运算 a. 拼接运算 b. 复制运算 c. 子串判断 d. 取长度 5. 格式化 a. 使用位置参数 b. 使用关键字参数 c. 使用属性访问 f-string…

计算机毕设之基于Hadoop+springboot的物品租赁系统的设计与实现(前后端分离,内含源码+文档+教程)

该系统基于Hadoop平台,利用Java语言、MySQL数据库,结合目前流行的 B/S架构,将物品租赁管理的各个方面都集中到数据库中,以便于用户的需要。在确保系统稳定的前提下,能够实现多功能模块的设计和应用。该系统由管理员功能…

Mybatis 框架 ( 四 ) QueryWrapper

4.5.Wrapper条件构造器 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 QueryWrapper : Entity 对象封装操作类,不是用lambda语法 UpdateWrapper &am…

android注解之APT和javapoet

前言 前面我们已经讲过注解的基本知识,对于注解还不太了解的,可以去看一下之前的文章, android 注解详解_袁震的博客-CSDN博客。 之前我们在讲注解的时候,提到过APT和JavaPoet,那么什么是APT和JavaPoet呢&#xff1…

【Mysql】Mysql获取排班时间段中的休息时间段方法

在MySQL中,可以使用自连接(self-join)来获取上一条记录的结束时间和下一条记录的开始时间,并将它们组合成一条记录。首先,需要为表创建一个包含记录ID和时间信息的临时表,然后使用自连接获取相邻记录的时间…

【面试经典150 | 数组】移除元素

文章目录 写在前面Tag题目来源题目解读解题思路方法一:原地操作 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等…

【STM32】常用存储器

常用存储器 RAM 存储器 RAM 是“Random Access Memory”的缩写,被译为随机存储器。所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。而RAM可随读取其内部任意地址的数据,时间都是…

若依框架i18n国际化

需求背景 项目需求要做国际化,结果网上找了好几篇文章,没有一个可以一次性搞定,现在这里总结一下。首先,我们分为两部分处理,一个是前端页面的静态文字,这个由前端vue.json自行处理。第二部分就是后端的错…

Qt下SVG格式图片应用

SVG格式图片介绍 svg格式图片又称矢量图,该种格式的图片不同于png等格式的图片,采用的并不是位图的形式来组织图片,而是采用线条等组织图片,svg格式是图片的文件格式是xml,可以通过文件编译器打开查看svg格式内容。 …

使用Vagrant创建和管理本地Kubernetes(K8s)集群的步骤是什么

文章目录 步骤1:准备环境步骤2:创建Vagrantfile步骤3:启动虚拟机步骤4:安装Kubernetes步骤5:配置Kubernetes网络插件步骤6:将Worker节点加入集群步骤7:验证集群步骤8:部署应用步骤9&…

综合续航达1040公里:腾势计划2024年在香港上市,售价60-100 万

腾势汽车表示,他们计划于2024年在香港地区上市全新的D9车型。这款中大型高端新能源MPV是通过DM-i超级混动技术打造的,由于综合续航能力达到1040公里,且纯电续航最大可达190公里,这款车已经引起了广泛关注。据腾势销售事业部总经理…

[小尾巴 UI 组件库] 全屏响应式轮播背景图(基于 Vue 3 与 Element Plus)

文章归档于:https://www.yuque.com/u27599042/row3c6 组件库地址 npm:https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee:https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…