【一文理解】conda install pip install 区别

大部分情况下,conda install & pip install 二者安装的package都可以正常work,但是混装多种package后容易版本冲突,出现各种报错。

目录

检查机制

支持语言

库的位置

环境隔离

编译情况


检查机制

conda有严格的检查机制,会配套安装依赖,能够保证当前安装的package安装好后能work,但是conda只检查用conda安装的package。例如,新安装的package需要依赖numpy ,本地已有使用pip安装的numpy(1.19.2),conda在新安装package时可能会视为没有numpy,然后通过conda再安装一个依赖版本的numpy(1.18.5)。这时候,两个numpy就会冲突。甚至报错DLL load failed: 找不到指定的模块。

pip的检查机制相对宽松,可以既检查conda安装过的package的也检查pip安装过的package。并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。

支持语言

conda 是跨平台的通用包和环境管理器,可以支持多种语言,除了Python和R,conda还支持Ruby、Lua、Scala、Java、JavaScript、C/C++、Fortran等多种编程语言,以及大部分生信软件的安装。

pip 是 python 官方推荐的包下载工具,它专注于为Python用户提供软件包安装、更新和卸载的功能。因此,pip主要支持的语言是Python。通过pip,Python用户可以轻松地从Python Package Index(Python包索引)中获取并安装所需的软件包。

综上所述,conda和pip在支持的语言方面有所不同。conda以其广泛的编程语言支持而著称,而pip则专注于Python语言的软件包管理。用户可以根据自己的需求和所使用的编程语言来选择合适的软件包管理工具。

库的位置

conda install:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。

pip install:分两种情况,如果当前conda环境使用系统的的python,则库会被保存在 ~/.local/lib/python3.x/site-packages文件夹中;如果使用的是当前conda环境内置的python,则库会被保存到 anaconda3/envs/current_env/lib/site-packages中

环境隔离

conda 可以直接创建隔离的环境,例如conda create -n 环境名 python=3.6。conda通过在系统中创建独立的文件夹来实现环境隔离。每个环境都有自己的Python解释器、库和二进制文件。当激活一个conda环境时,conda会修改系统的环境变量,使得运行Python或相关工具时,实际上是在当前环境中运行。

  • conda可以管理多个Python版本,即使版本不同也能实现环境隔离。
  • conda的环境导出和复制功能使得在不同机器上复制相同环境变得简单。

pip 没有内置支持环境隔离,只能借助其他工具例如virtualenv or venv实现环境隔离,virtualenv和venv可以创建独立的Python虚拟环境,每个环境都有自己的Python解释器和库。

  • 使用virtualenv或venv创建虚拟环境后,用户可以在该环境中独立地安装和管理第三方库。
  • 激活虚拟环境后,pip会自动将第三方库安装到虚拟环境中,而不会影响到全局的Python环境。

编译情况

conda在安装软件包时,会尝试自动解决依赖关系,并下载和编译所需的依赖包。对于预编译的包(如二进制包),conda会优先使用这些包以加快安装速度。如果conda无法找到预编译的包,它可能会尝试从源代码编译软件包,但这通常不是其主要功能。

  • conda允许用户指定编译选项和配置,例如使用特定的编译器版本、启用或禁用特定的编译特性等。
  • 这些选项通常通过conda的构建脚本或配置文件来设置。

pip 里的软件包为wheel版或者源代码发行版。wheel属于已编译版的一种,但而源代码发行版必须要经过编译生成可执行程序后才能使用。pip在安装软件包时,也会尝试解决依赖关系,但它通常不会从源代码编译依赖包,而是下载已编译的二进制包(如果可用)。如果pip无法找到已编译的二进制包,它可能会尝试从源代码编译软件包,但这需要用户具备相应的编译环境和工具。

  • pip允许用户通过命令行选项或环境变量来指定编译选项和配置。
  • 然而,与conda相比,pip的编译选项和配置可能更加有限和复杂。

 

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

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

相关文章

【C++】模拟实现红黑树

🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.逐步实现项目功能模块及其逻辑详解 📌实现RBTreeNode类模板 🎏构造RBTreeNode类成员变量 🎏实现RBTreeNode类构…

图解C#高级教程(二):事件

在现实生活当中,有一些事情发生时,会连带另一些事情的发生。例如,当某国的总统发生换届时,不同党派会表现出不同的行为。两者构成了“因果”关系,因为发生了A,所以发生了B。在编程语言当中,具有…

Android问题笔记五十:构建错误-AAPT2 aapt2-7.0.2-7396180-windows Daemon

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

Visual Studio 字体与主题推荐

个人推荐,仅供参考: 主题:One Monokai VS Theme 链接:One Monokai VS Theme - Visual Studio Marketplacehttps://marketplace.visualstudio.com/items?itemNameazemoh.onemonokai 效果: 字体:JetBrain…

SpringBoot项目请求不中断动态更新代码

在开发中,有时候不停机动态更新代码热部署是一项至关重要的功能,它可以在请求不中断的情况下下更新代码。这种方式不仅提高了开发效率,还能加速测试和调试过程。本文将详细介绍如何在 Spring Boot 项目在Linux系统中实现热部署,特…

《业务三板斧:定目标、抓过程、拿结果》读书笔记1

这个书是24年新书,来自阿里系的人的作品,还可以。今天先看前沿部分的精彩部分: 我们在服务企业的过程中,发现了一个常见的管理现象:管理者自 己承担了团队里重要的项目,把风险和压力都集中在自己身上。因 此…

报刊订阅系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,报刊类型管理,报刊信息管理,报刊订阅管理,订阅发送管理,系统管理 微信端账号功能包括:系统首页,报刊信息&a…

<<迷雾>> 第7章 会变魔术的触发器(1)--连着两个按键开关的逻辑电路 示例电路

info::操作说明 鼠标单击开关切换开合状态 A 能使灯点亮并保持; B 则点亮的灯熄灭. 注: 此处使用的是 按钮开关, 松开鼠标后开关会自己断开, 类似于手机和电脑上的电源按钮 因系统原因, 此类开关与普通开关在外观上并无差别. primary::在线交互操作链接 https://cc.xiaogd.net/…

【Android】获取备案所需的公钥以及签名MD5值

目录 重要前提 获取签名MD5值 获取公钥 重要前提 生成jks文件以及gradle配置应用该文件。具体步骤请参考我这篇文章:【Android】配置Gradle打包apk的环境_generate signed bundle or apk-CSDN博客 你只需要从头看到该文章的配置build.gradle(app&…

HTML流光爱心

文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心(双心版)1…

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据…

检查jar冲突,查找存在相同class的jar

写在前面 本文看下如何查找jar冲突,即查找哪些jar包中存在相同的class。如果是存在相同jar的不同版本,基本一眼就能看出来,然后结合maven的依赖关系将其剔除掉即可,但是当你遇到了有人手动拷贝某些class到jar包中导致冲突的情况时…

wpf实现新用户页面引导

第一步 第二部 部分代码: private void show(int xh, FrameworkElement fe, string con, Visibility vis Visibility.Visible) {Point point fe.TransformToAncestor(Window.GetWindow(fe)).Transform(new Point(0, 0));//获取控件坐标点RectangleGeometry rg new Rectangl…

FP7209: 用于紫外线消毒灯的 升压LED恒流驱动芯片

现在社会对于居家消毒也越发重视起来。而居家消毒除了75%浓度酒精及各类消毒液外,利用紫外线灯给衣物表面、房间消毒也是一种很好的选择。FP7209 定位于低压线性恒流驱动,精度高、外围电路简单、使用方便且可靠性高,更可广泛应用于商业照明系…

鸿蒙harmonyos next flutter通信之BasicMessageChannel获取app版本号

本文将通过BasicMessageChannel获取app版本号,以此来演练BasicMessageChannel用法。 建立channel flutter代码: //建立通道 BasicMessageChannel basicMessageChannel BasicMessageChannel("com.xmg.basicMessageChannel",StringCodec());…

STM32自动下载电路分享及注意事项

文章目录 简介ISP下载启动配置 USB转串口芯片CH340C手动isp下载自动isp下载RTS、DTR电平变化分析注意事项 简介 在嵌入式开发中,使用STM32下载程序,可以通过仿真器下载,也可以通过串口下载。在stm32串口下载时,我们需要手动配置启…

【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

IPv6地址格式 IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits,IPv6 地址的表示、书写方式也从 IPv4 的点分十进制,修改16进制的冒号分割 IPv4 点分格式(.) 192.168.11.11 IPv6 冒号分割(:) 2408:8459:3032:0000:0000:0000:0001:a9fd IPv6 的规范…

Axure大屏可视化模板在不同领域中的实际应用案例

一、农业领域 案例背景: 智慧农业是当前农业发展的重要趋势,通过物联网、大数据等技术手段,实现农业生产的智能化管理。Axure大屏可视化模板在智慧农业平台的建设中发挥了重要作用。 实际应用: 农田环境监控:通过Axu…

828华为云征文 | 华为云Flexus云服务器X实例搭建企业内部VPN私有隧道,以实现安全远程办公

VPN虚拟专用网络适用于企业内部人员流动频繁和远程办公的情况,出差员工或在家办公的员工利用当地ISP就可以和企业的VPN网关建立私有的隧道连接。 通过拨入当地的ISP进入Internet再连接企业的VPN网关,在用户和VPN网关之间建立一个安全的“隧道”&#xff…

智慧环保大数据平台建设方案

1. 智慧环保现状与挑战 随着环境问题日益严重,环境事件频发,如贵州都匀矿渣污染、云南南盘江水污染等,以及癌症高发率的出现,智慧环保建设显得尤为重要。智慧环保旨在通过技术手段提升环境管理和决策的智能化水平。 2. 宏观环境…