“挖矿”系列:细说Python、conda 和 pip 之间的关系

     继续挖矿,挖“金矿”!

1. Python、conda 和 pip(挖“金矿”工具)

       Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具,它们各自有不同的作用,但相互之间存在密切的关系:

  • Python:是一种解释型、面向对象的高级程序设计语言。它广泛应用于数据分析、机器学习、网络编程、Web 开发等领域,并且拥有庞大的标准库以及丰富的第三方库支持。

  • pip是 Python 的官方包管理器,主要用于安装和管理 Python 第三方软件包。当用户需要在项目中使用特定的 Python 库时,可以使用 pip install 命令从 Python Package Index (PyPI) 等仓库下载并安装这些库。

  • conda:是由 Anaconda 分发版引入的一种开源跨平台包管理系统和环境管理器。与 pip 相比,conda 不仅可以安装 Python 包,还能管理非 Python 软件包(例如 C/C++ 库),并且它更侧重于环境管理和依赖解决

具体关系如下:

  • conda 可以创建独立的虚拟环境,在每个环境中可以安装不同版本的 Python 以及其他相关的软件包,包括但不限于 Python 包。
  • 在 conda 创建的环境中,你可以继续使用 pip 来安装 PyPI 上的 Python 包,或者使用 conda 自身的命令(如 conda install)来安装 Anaconda 或 conda-forge 渠道中的 Python 和非 Python 包。
  • conda 支持更加全面的环境管理功能,比如可以方便地创建、激活、删除环境,并且在处理复杂依赖关系时表现得更为出色,能够自动解决包之间的版本冲突问题。
  • 当只需要处理纯粹的 Python 包时,pip 是一个轻量级的选择,尤其对于那些不在 conda 官方仓库中的包,pip 通常是首选工具。

       总之,Python 作为基础语言,而 pip 和 conda 则分别提供了用于管理 Python 和其他相关软件包的功能,两者可以结合使用以满足不同的项目需求。在实际工作中,开发者可以根据项目特点和团队规范选择合适的包管理工具。

2.  扒一扒Python Package Index(PyPI)仓库

       Python Package Index (PyPI),也被称为 Cheese Shop,是官方的 Python 第三方软件包仓库。在 PyPI 中,你可以找到数以万计由全球开发者贡献的各种 Python 库和工具,这些库涵盖了各种用途(各类“金矿”,各取所需),包括但不限于:

  1. 数据分析与科学计算

    NumPy、Pandas、SciPy、Matplotlib、Seaborn、Statsmodels 等用于数据处理、统计分析及可视化。
  2. 机器学习与深度学习

    TensorFlow、PyTorch、Keras、Scikit-learn、XGBoost、LightGBM、Theano、TensorFlow Probability 等框架和库。
  3. Web 开发框架

    Django、Flask、FastAPI、Bottle 等用于构建 Web 应用程序的全栈或轻量级框架。
  4. 网络编程

    Requests、urllib3、aiohttp、Twisted、httplib2 用于处理 HTTP 请求和其他网络通信。
  5. 数据库操作

    SQLAlchemy、MySQL-connector-python、psycopg2(PostgreSQL)、pymongo(MongoDB)等数据库适配器。
  6. 测试工具

    unittest、pytest、tox、mock、selenium 等用于编写和执行单元测试、集成测试以及浏览器自动化测试。
  7. 日志和调试

    logging、pdb、ipdb、logging-tree、structlog 等用于记录和查看日志以及调试代码。
  8. 版本控制和打包

    setuptools、pipenv、wheel、twine 等用于创建、管理、分发 Python 包。
  9. 文本处理与自然语言处理

    NLTK、spaCy、TextBlob、gensim、nltk 等用于文本分析、词法分析、语法分析和语义理解。
  10. 其他各类实用工具和库

    Click、argparse、docopt 用于命令行界面设计;BeautifulSoup、lxml 用于网页解析;Django REST framework、Marshmallow 用于构建 RESTful API;asyncio、tornado、gevent 用于异步编程等等。

       PyPI 上的软件包(金矿-入口提示)数量庞大且种类繁多,几乎可以满足所有类型的 Python 开发需求。通过使用 pip install 命令,用户可以方便地安装和使用这些第三方库。

3. conda是一个强大的环境管理和包管理工具

       conda作为一个强大的环境管理和包管理工具,其功能不仅限于Python相关的软件包。它允许用户安装和管理多种编程语言的依赖库,包括但不限于C、C++编译器及其相关库。例如,使用conda可以方便地安装像OpenCV(一个基于C++的计算机视觉库)、Rust语言环境、CMake构建系统、Fortran编译器等非Python组件。

       在解决依赖关系方面,conda能够处理复杂的依赖树,确保在一个环境中所有软件包都能获得正确的版本,并且这些版本之间相互兼容。这对于科学计算、数据分析以及跨平台开发工作来说尤其重要,因为它避免了因不同软件包间版本冲突而导致的问题。

       此外,通过创建和管理虚拟环境,conda使得在同一台机器上为不同的项目或任务维护独立的运行时环境变得轻而易举,这样开发者可以在不影响全局环境或者其它项目的情况下自由切换所需的软件包组合。

3.1 conda 能安装的 Python 包

       conda 能安装的 Python 包非常广泛,涵盖了科学计算、机器学习、数据处理、可视化、网络编程等众多领域。以下列出一些通过 conda 可以安装的 Python 库示例:

  1. 数据分析与科学计算库

    • NumPy
    • SciPy
    • Pandas
    • Matplotlib
    • Scikit-learn
    • Statsmodels
    • Seaborn
  2. 机器学习与深度学习框架

    • TensorFlow
    • PyTorch
    • Keras
    • Theano
    • MXNet
    • Caffe
    • Chainer
  3. Web 开发框架

    • Django
    • Flask
    • Pyramid
    • Bottle
  4. 自然语言处理库

    • NLTK
    • spaCy
    • gensim
    • TextBlob
  5. 数据库接口

    • SQLAlchemy
    • psycopg2 (PostgreSQL)
    • mysqlclient (MySQL)
  6. 数据可视化工具

    • Plotly
    • Bokeh
    • Altair
    • Holoviews
  7. 云计算和大数据处理

    • Apache Spark
    • Dask
    • Hadoop相关组件
  8. 测试工具

    • pytest
    • unittest
    • mock
    • coverage
  9. 开发工具及环境

    • ipython/jupyter notebook/lab
    • black, flake8 等代码格式化与检查工具
    • sphinx 用于文档生成
    • virtualenvwrapper 等虚拟环境管理工具(虽然在conda环境中通常不直接使用)

实际上,Anaconda或Miniconda发行版包含了一个名为conda-forge的社区频道,其中包含了成千上万个Python包及其依赖项,几乎覆盖了所有主流和新兴的Python库。因此,只要是能在Python生态中找到的大多数开源项目,都可以通过conda来安装和管理。

3.2 conda 能安装的非 Python 包

conda 可以安装和管理的非 Python 软件包范围广泛,包括但不限于以下类型:

  1. 编译工具链:如C、C++编译器(GCC, Clang),Fortran编译器(GFortran),以及其他语言编译器或解释器(例如Rust, Julia等)。

  2. 科学计算库

    • 数值计算库:例如BLAS/LAPACK(基础线性代数子程序库),MKL(Intel Math Kernel Library),OpenBLAS等。
    • 矩阵运算库:如Armadillo,Eigen,PETSc等。
    • 信号处理与图像处理库:FFTW,OpenCV等。
    • 并行计算库:如OpenMP,MPI,CUDA Toolkit,cuDNN等用于GPU加速计算的库。
  3. 数据库引擎

    • SQLite
    • PostgreSQL客户端和服务器端软件包
    • MySQL客户端和连接器
  4. Web服务器和相关工具

    • Apache HTTP Server
    • Nginx
    • OpenSSL和其他安全相关的软件包
  5. 开发工具

    • Git版本控制系统及其相关插件
    • CMake,Autoconf等构建系统工具
    • Vim,Emacs等文本编辑器
  6. 图形用户界面库和工具

    • GTK+,Qt等GUI开发库
    • 图形渲染和可视化库:如OpenGL,GLUT等
  7. 其他编程语言环境

    • R语言及R包
    • Ruby,Perl,Lua等脚本语言环境
  8. 系统工具和库

    • zlib压缩库
    • bzip2,xz压缩工具
    • curl,wget等网络传输工具
    • ncurses,readline等终端交互式库

通过conda,这些非Python软件包可以方便地在不同的操作系统环境下被管理和安装,并且能够自动解决复杂的依赖关系,确保在一个环境中所有软件包都能正确、兼容地工作。

3.3 conda 是一个强大的环境管理工具

       conda作为一个强大的环境管理工具,能够帮助用户创建和管理包含不同版本Python以及其他软件包的独立、隔离的运行环境。以下是可以使用conda管理的各种环境:

  1. Python环境

    • 不同版本的Python:例如,可以创建一个基于Python 3.7的环境,同时另一个环境则基于Python 2.7。
    • 特定项目所需的Python库组合:每个环境中可以安装特定版本的numpy、scipy、matplotlib等库,确保项目的依赖不会与其他项目冲突。
  2. 非Python环境

    • 其他编程语言环境:虽然conda以支持Python闻名,但它也可以用来管理和构建R语言、Julia、Ruby等其他语言的环境。
    • 第三方软件与工具:比如数据库(如SQLite、PostgreSQL客户端),编译器(如GCC),科学计算工具(如OpenBLAS、FFTW),以及GIS软件(如GDAL、QGIS)等非Python相关的软件包。
  3. 跨平台环境

    • conda支持Windows、Linux和macOS等多个操作系统平台,能够在这些平台上创建和管理一致的环境。
  4. 多用户和团队环境

    • 在服务器或集群上,conda可以帮助系统管理员为不同的用户或团队创建和维护各自的环境配置,便于多人协作且各自拥有独立且可重现的开发或生产环境。

       通过conda,用户可以方便地创建新环境、激活环境、在环境中安装或更新包、删除环境等操作,极大地简化了开发和部署过程中的环境管理工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AIGC实战——能量模型(Energy-Based Model)

AIGC实战——能量模型 0. 前言1. 能量模型1.1 模型原理1.2 MNIST 数据集1.3 能量函数 2. 使用 Langevin 动力学进行采样2.1 随机梯度 Langevin 动力学2.2 实现 Langevin 采样函数 3. 利用对比散度训练小结系列链接 0. 前言 能量模型 (Energy-based Model, EBM) 是一类常见的生…

《PCI Express体系结构导读》随记 —— 第II篇 第13章 PCI总线与虚拟化技术(6)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第13章 PCI总线与虚拟化技术(5) 13.2 ATS(Address Translation Services) 单纯使用IOMMU并不能充分发挥处理器系统的效率,从图13-2中可以发现&…

JVM-JVM中对象的生命周期

申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 对象的创建 常量池检查:检查new指令是否能在常量池…

亚马逊测评:揭秘做号的“花招”与“猫腻”,如何避免被割韭菜?

亚马逊测评行业如今如火如荼,吸引了众多朋友投身其中。然而,这个行业也是五花八门,什么样的人和公司都有,让人眼花缭乱。作为卖家,如何选择靠谱的测评服务商是一门必修课;而对于初学者,如何入门…

TensorRT转换onnx的Transpose算子遇到的奇怪问题

近来把一个模型导出为onnx并用onnx simplifier化简后转换为TensorRT engine遇到非常奇怪的问题,在我们的网络中有多个检测头时,转换出来的engine的推理效果是正常的,当网络中只有一个检测头时,转换出来的engine的推理效果奇差&…

PAM | 账户安全 | 管理

PAM PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。 在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类…

时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测

时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测 目录 时序预测 | Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现BO-LSSVM贝叶斯算法优化最小二乘支持向量机时间…

Open CASCADE学习|直纹曲面(ruled surface)

直纹曲面是一类特殊的曲面,在几何学和微分几何中都有研究。它的主要特性是,曲面上的每一点都有至少一条直线经过。换句话说,直纹曲面可以由一条直线通过连续运动构成。在三维欧几里德空间中,最常见的直纹曲面是平面、柱面和锥面&a…

JAVA面试框架篇

1. Spring refresh 流程 要求 掌握 refresh 的 12 个步骤 Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法&#x…

Manifest merger failed with multiple errors, see logs

问题 Manifest merger failed with multiple errors, see logs详细问题 笔者进行Android 项目开发&#xff0c;修改AndroidManifest.xml代码后&#xff0c;控制台报错 AndroidManifest.xml报错核心代码 <manifest><uses-permission android:name"android.perm…

解码DMAIC:李国武老师的品质与运营之道

DMAIC&#xff0c;对于许多人来说可能还是一个相对陌生的概念。但如果你是企业界的观察者&#xff0c;或者对提升产品质量有着浓厚的兴趣&#xff0c;那么你一定不能错过这个话题。DMAIC不仅是一种方法论&#xff0c;更是企业实现卓越运营、提升竞争力的关键工具。今天&#xf…

软件实例分享,乒乓球俱乐部会员系统管理软件教程

软件实例分享&#xff0c;乒乓球俱乐部会员系统管理软件教程 一、前言 以下软件程序教程以 佳易王乒乓球馆计时计费软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 多种计费方式&#xff0c;可以按单价&#xff0c;也可以按时间段 可…

166基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪

基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪&#xff0c;分辨虚假imf&#xff0c;提取最大峭度imf图。输出去噪前后时域及其包络谱结果。程序已调通&#xff0c;可直接运行。 166 matlab SVD去噪 IMF筛选 包络谱 (xiaohongshu.com)

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

【python--迭代生成器闭包面向对象继承多态】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python--迭代生成器闭包面向对象继承多态 往期内容1.迭代for...in字典的迭代列表迭代 生成器推导式的…

说说对BOM的理解(常见的BOM对象了解哪些)

文章目录 一、是什么二、window三、location四、navigator五、screen六、history 一、是什么 BOM (Browser Object Model)&#xff0c;浏览器对象模型&#xff0c;提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退&…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…

SG3225EAN规格书

SG3225EAN 晶体振荡器利用先进的锁相环技术和AT切割晶体单元&#xff0c;提供了宽频率范围和高性能LV-PECL输出&#xff0c;73.5 MHz至700 MHz的宽频率范围&#xff0c;能够保证高稳定性和宽频率调整的能力&#xff0c;适应于多样化的应用需求。2.5V和3.3V两种供电电压&#xf…

AutoSAR(基础入门篇)10.3-BswM配置

目录 一、ECU State Handing(ESH) 二、Module Initialization 三、Communication Control 说起BswM的配置,其实博主问过很多朋友了,大家基本都只用自动配置;很少有用到手动配置的时候,对于刚刚入门的大家来说,掌握自动配置基 本也就足够了。 一、ECU State Handing(ESH…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱13(附带项目源码)

效果演示 文章目录 效果演示前言每次丢弃一个物品源码完结前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机…