挖矿系列:细说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,用户可以方便地创建新环境、激活环境、在环境中安装或更新包、删除环境等操作,极大地简化了开发和部署过程中的环境管理工作。

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

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

相关文章

国产UOS操作系统rename用法

Linux系统里面有一个超级好用的rename命令,可以批量修改文件名 使用方法rename 被替换字符串 替换后字符串 哪些文件

为什么越来越多的企业在考虑将ERP从云端迁移到本地?

越来越多的企业在考虑将核心ERP迁移到本地部署,原来实施的时候局限于业务规模、实施成本的原因采用云端部署的方式越来越不再适应于企业规模的发展、系统应用和数据安全的要求。 因此他们都宁愿将云端ERP的数据迁移到本地,使得系统数据和安全更加可控。…

[Linux 进程控制(二)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…

QSlider使用笔记

最近做项目使用到QSlider滑动条控件,在使用过的过程中,发现一个问题就是点滑动条上的一个位置,滑块并没有移动到鼠标点击的位置,体验感很差,于是研究了下,让鼠标点击后滑块移动到鼠标点击的位置。 1、event…

node-sass版本与NodeJS版本不匹配的问题

npm install 报错如下 npm ERR! code 1 npm ERR! path D:\Project\git_Product\YYYY\user\node_modules\node-sass npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/build.js 问题原因 node-sass 与 node 版本不匹配 卸载Node…

【计算机图形学】实验二 用扫描线算法实现多边形填充

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

9.SELinux

目录 1. 概述 1.1. 概念 1.2. 作用: 1.3. SELinux与传统的权限区别 2. SELinux工作原理 2.1. 名词解释 2.1.1. 主体(Subject) 2.1.2. 目标(Object) 2.1.3. 策略(Policy) 2.1.4. 安全上…

详解Redis哨兵模式下,主节点掉线而重新选取主节点的流程

⭐最核心的结论:所谓选举的过程不是直接选出新的主节点,而是先在哨兵节点中选出 leader ,再由 leader 负责后续主节点的指定。 假定当前环境: 三个哨兵(sentenal1, sentenal2, sentenal3)一个主节点(redis-master)两个从节点(red…

接口测试框架对比

公司计划系统的开展接口自动化测试,需要我这边调研一下主流的接口测试框架给后端测试(主要测试接口)的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求,看哪个框架更适合我们。 需求 1、接口编写…

端到端实现高精地图重建(TopoNet解读和横评)

论文出处 [2304.05277] Graph-based Topology Reasoning for Driving Scenes (arxiv.org)https://arxiv.org/abs/2304.05277 TopoNet TopoNet的目标是从车辆上安装的多视角摄像头获取图像,感知实体并推理出驾驶场景的拓扑关系,实现端到端预测&#xf…

【自动化测试】----Java的单元测试工具Junit5

目录 支持Java的最低版本为8在pom.xml添加依赖Junit提供的注解功能 断言 Assertion类提供的一些方法测试用例执行顺序 (为了预防测试用例执行顺序错误)参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例…

Java多线程--JDK5.0新增线程创建方式

文章目录 一、新增方式1:实现Callable接口(1)介绍(2)案例(3)总结对比 二、新增方式2:使用线程池(1)问题与解决思路1、现有问题2、解决思路3、好处 &#xff0…

Swift Vapor 教程(查询数据、插入数据)

上一篇简单写了 怎么创建 Swift Vapor 项目以及在开发过程中使用到的软件。 这一篇写一个怎么在创建的项目中创建一个简单的查询数据和插入数据。 注:数据库配置比较重要 先将本地的Docker启动起来,用Docker管理数据库 将项目自己创建的Todo相关的都删掉…

以小猪o2o生活通v17.1为例简要分析SWOOLE加密破解,swoole_loader加密破解swoole加密逆向后的代码修复流程(个人见解高手掠过)

现在用Php加密五花八门除了组件就是混淆,在组件里面响当当的还属swoole,SWOOLEC是不错的国产加密,值得推荐官方宣称是永远无法破解的加密算法,针对swoole compiler的代码修复我谈谈我的看法,以小猪o2o生活通&#xff0…

PyTorch 2.2 中文官方教程(十九)

使用 RPC 进行分布式管道并行 原文:pytorch.org/tutorials/intermediate/dist_pipeline_parallel_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者:Shen Li 注意 在github中查看并编辑本教程。 先决条件: PyTorc…

04-Java建造者模式 ( Builder Pattern )

建造者模式 摘要实现范例 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象 一个Builder 类会一步一步构造最终的对象,该 Builder 类是独立于其他对象的 建造者模式属于创建型模式,它提供了一种创建对…

深度学习手写字符识别:训练模型

说明 本篇博客主要是跟着B站中国计量大学杨老师的视频实战深度学习手写字符识别。 第一个深度学习实例手写字符识别 深度学习环境配置 可以参考下篇博客,网上也有很多教程,很容易搭建好深度学习的环境。 Windows11搭建GPU版本PyTorch环境详细过程 数…

vcruntime140.dll最新的修复方法,一键修复vcruntime140.dll的手段

在这篇文章中,我们将深入探讨并详细介绍各种修复vcruntime140.dll文件缺失或损坏问题的方法。鉴于此类问题广泛存在并影响了众多用户,本文目的是向大家展示不同的修复策略,希望能够帮助每个人解决这些棘手的技术难题。下面一起来看看vcruntim…

【RT-DETR有效改进】UNetv2提出的一种SDI多层次特征融合模块(细节高效涨点)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本问给大家带来的改进机制是UNetv2提出的一种多层次特征融合模块(SDI)其是一种用于替换Concat操作的模块,SDI模块的主要思想是通过整合编码器生成的层级特征图来增强图像中的语义信息和细节信息。包括皮肤…

黑豹程序员-ElementPlus选择图标器

ElementPlus组件提供了很多图标svg 如何在你的系统中&#xff0c;用户可以使用呢&#xff1f; 这就是图标器&#xff0c;去调用ElementPlus的icon组件库&#xff0c;展示到页面&#xff0c;用户选择&#xff0c;返回选择的组件名称。 效果 代码 <template><el-inpu…