“挖矿”系列:细说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/687806.shtml

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

相关文章

《白话C++》第10章 STL和boost,Page67~70 std::auto_ptr

std::auto_ptr可以不经意间转移裸指针控制权 std::auto_ptr持有裸指针的控制权&#xff0c;却可以随随便便看似不经意地转移给另一个auto_ptr: #include <iostream> #include <memory>using namespace std;struct S {int a;void SetA(int a){this->a a;}~S()…

SQL Extractor 数据库修复取证大师-数据库修复专家

SQL Extractor 数据库修复取证大师介绍 SQL Extractor 数据库修复取证大师 功能介绍&#xff1a;SQL Extractor数据库修复取证大师最新版本10.94软件特色:针对勒索病毒加密的SQL 数据库有特殊的修复算法,可匹配用友,金蝶数据库结构关系. 支持7.0、SQL2000、SQL2005、SQL2008、…

可视化低代码表单设计器

JNPF 表单设计器是一款在线可视化表单建模工具&#xff0c;基于VueSpringboot技术开发&#xff0c;具有组件丰富、操作简单、所见即所得等特性&#xff0c;既能够设计普通的数据录入表单&#xff0c;也能够配合流程设计出各类审批流转表单。 应用地址&#xff1a;https://www.j…

ForkJoin 的使用以及原理

原理 Fork-Join 是一种并行计算模式&#xff0c;它通常用于解决递归式或者分治式的问题。其原理基于将一个大的任务划分成若干个小任务&#xff0c;然后并行地执行这些小任务&#xff0c;最后将它们的结果合并起来得到最终的结果。 具体来说&#xff0c;Fork-Join 模式包含两个…

报错405(errAxiosError: Request failed with status code 405)

errAxiosError: Request failed with status code 405 前端调用接口的方法跟后台定义接口的方法不一致

论文阅读:MotionNet基于鸟瞰图的自动驾驶联合感知和运动预测

MotionNet: Joint Perception and Motion Prediction for Autonomous Driving Based on Bird’s Eye View Maps MotionNet&#xff1a;基于鸟瞰图的自动驾驶联合感知和运动预测 论文地址&#xff1a;MotionNet: Joint Perception and Motion Prediction for Autonomous Drivi…

C++-opencv的imread、imshow、waitkey、namedWindow

在C中使用OpenCV时&#xff0c;imread和imshow是两个非常基础且常用的函数&#xff0c;用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象&#xff0c;这是OpenCV中…

走进水墨世界,寻找传统之美

为深入了解中国传统水墨文化的底蕴及其在当代的价值&#xff0c;2024年2月16日&#xff0c;曲阜师范大学计算机学院“古韵新声&#xff0c;格物致‘知’”实践队的队员王涵智走进山东省高唐县巩德春艺术馆展开社会实践。实践队员以探访艺术馆为契机&#xff0c;领略传统水墨文化…

Academic Inquiry|投稿状态分享(ACS,Wiley,RSC,Elsevier,MDPI,Springer Nature出版社)

作为科研人员&#xff0c;我们经常会面临着向学术期刊投稿的问题。一般来说&#xff0c;期刊的投稿状态会在官方网站上进行公示&#xff0c;我们可以通过期刊的官方网站或者投稿系统查询到我们投稿的论文的状态&#xff0c;对于不同的期刊在投稿系统中会有不同的显示。 说明&am…

如何查看HP打印机的Wi-Fi密码?这里提供三种方法

如果你计划通过Wi-Fi Direct从笔记本电脑或智能手机无线打印&#xff0c;则需要HP打印机密码。有了这个功能&#xff0c;打印机可以创建自己的Wi-Fi网络&#xff0c;你不需要依赖其他Wi-Fi网络。你只需转到设备的Wi-Fi设置&#xff0c;将其连接到Wi-Fi Direct&#xff0c;然后立…

OpenAI全新发布的Sora,到底意味着什么?

16日凌晨&#xff0c;OpenAI发布了文本视频的工具&#xff08;text-do-video&#xff09;Sora&#xff0c;整个世界再次被震撼。 Sora的出现&#xff0c;到底意味着什么&#xff1f; 目录 Sora的背景与概述Sora是什么&#xff1f;能为我们做些什么&#xff1f;存在的一些问题 文…

字节8年经验之谈 —— 详解python自动化单元测试!

1. 前言 说实话&#xff0c;除了测试要求&#xff0c;我实在不知道写单元测试有什么意义&#xff0c;一个函数50行代码&#xff0c;有多种参数组合&#xff0c;为了测试这些条件&#xff0c;需要编写测试用例&#xff0c;写完的测试用例比需要测试的函数还长。也就是说&#x…

14-树-二叉树的最小深度

这是树的第14篇算法&#xff0c;力扣链接。 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出…

ubuntu18.04运行DynaSLAM,实例分割+多视图几何+背景修复

博主电脑上之前就安装了ORB-SLAM2所需的环境&#xff0c;所以baseline为ORB-SLAM2的算法几乎都是直接./build.sh即可。需要我们安装的内容就是python的环境&#xff0c;Pytorch或者TensorFlow&#xff0c;以及下载预训练模型和数据集。 一、安装ORB-SLAM2所需的库 C11 or C0x…

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

C语言题目:一些简单的编程和递归题目

以下的题目的较难的点都在注释里面讲解清楚了 一. 1.喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 代码实现&#xff1a; int main() {int money 20;int price 1;int e…

C#,二进制数的非0位数统计(Bits Count)的算法与源代码

计算一个十进制数的二进制表示有多少位1&#xff1f; 1 遍历法&#xff08;递归或非递归&#xff09; 使用循环按位统计1的个数。 2 哈希查表法 利用一个数组或哈希生成一张表&#xff0c;存储不同二进制编码对应的值为1的二进制位数&#xff0c;那么在使用时&#xff0c;只…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(五)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

控制程序执行流程

资源 资源下载 【免费】突破密码认证程序&#xff08;修改函数返回地址&#xff09;资源-CSDN文库 资源内容 源码 在上一篇文章里 修改函数返回地址-CSDN博客 流程 对程序进行编译 思路 了解栈的情况&#xff08;函数地址、缓冲区偏移量&#xff09;程序中密码认证的地…