“挖矿”系列:细说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 库和工具,这些库涵盖了各种用途(各类“金矿”,各取所需),包括但不限于:
-
数据分析与科学计算:
NumPy、Pandas、SciPy、Matplotlib、Seaborn、Statsmodels 等用于数据处理、统计分析及可视化。 -
机器学习与深度学习:
TensorFlow、PyTorch、Keras、Scikit-learn、XGBoost、LightGBM、Theano、TensorFlow Probability 等框架和库。 -
Web 开发框架:
Django、Flask、FastAPI、Bottle 等用于构建 Web 应用程序的全栈或轻量级框架。 -
网络编程:
Requests、urllib3、aiohttp、Twisted、httplib2 用于处理 HTTP 请求和其他网络通信。 -
数据库操作:
SQLAlchemy、MySQL-connector-python、psycopg2(PostgreSQL)、pymongo(MongoDB)等数据库适配器。 -
测试工具:
unittest、pytest、tox、mock、selenium 等用于编写和执行单元测试、集成测试以及浏览器自动化测试。 -
日志和调试:
logging、pdb、ipdb、logging-tree、structlog 等用于记录和查看日志以及调试代码。 -
版本控制和打包:
setuptools、pipenv、wheel、twine 等用于创建、管理、分发 Python 包。 -
文本处理与自然语言处理:
NLTK、spaCy、TextBlob、gensim、nltk 等用于文本分析、词法分析、语法分析和语义理解。 -
其他各类实用工具和库:
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 库示例:
-
数据分析与科学计算库:
- NumPy
- SciPy
- Pandas
- Matplotlib
- Scikit-learn
- Statsmodels
- Seaborn
-
机器学习与深度学习框架:
- TensorFlow
- PyTorch
- Keras
- Theano
- MXNet
- Caffe
- Chainer
-
Web 开发框架:
- Django
- Flask
- Pyramid
- Bottle
-
自然语言处理库:
- NLTK
- spaCy
- gensim
- TextBlob
-
数据库接口:
- SQLAlchemy
- psycopg2 (PostgreSQL)
- mysqlclient (MySQL)
-
数据可视化工具:
- Plotly
- Bokeh
- Altair
- Holoviews
-
云计算和大数据处理:
- Apache Spark
- Dask
- Hadoop相关组件
-
测试工具:
- pytest
- unittest
- mock
- coverage
-
开发工具及环境:
- ipython/jupyter notebook/lab
- black, flake8 等代码格式化与检查工具
- sphinx 用于文档生成
- virtualenvwrapper 等虚拟环境管理工具(虽然在conda环境中通常不直接使用)
实际上,Anaconda或Miniconda发行版包含了一个名为conda-forge
的社区频道,其中包含了成千上万个Python包及其依赖项,几乎覆盖了所有主流和新兴的Python库。因此,只要是能在Python生态中找到的大多数开源项目,都可以通过conda来安装和管理。
3.2 conda 能安装的非 Python 包
conda 可以安装和管理的非 Python 软件包范围广泛,包括但不限于以下类型:
-
编译工具链:如C、C++编译器(GCC, Clang),Fortran编译器(GFortran),以及其他语言编译器或解释器(例如Rust, Julia等)。
-
科学计算库:
- 数值计算库:例如BLAS/LAPACK(基础线性代数子程序库),MKL(Intel Math Kernel Library),OpenBLAS等。
- 矩阵运算库:如Armadillo,Eigen,PETSc等。
- 信号处理与图像处理库:FFTW,OpenCV等。
- 并行计算库:如OpenMP,MPI,CUDA Toolkit,cuDNN等用于GPU加速计算的库。
-
数据库引擎:
- SQLite
- PostgreSQL客户端和服务器端软件包
- MySQL客户端和连接器
-
Web服务器和相关工具:
- Apache HTTP Server
- Nginx
- OpenSSL和其他安全相关的软件包
-
开发工具:
- Git版本控制系统及其相关插件
- CMake,Autoconf等构建系统工具
- Vim,Emacs等文本编辑器
-
图形用户界面库和工具:
- GTK+,Qt等GUI开发库
- 图形渲染和可视化库:如OpenGL,GLUT等
-
其他编程语言环境:
- R语言及R包
- Ruby,Perl,Lua等脚本语言环境
-
系统工具和库:
- zlib压缩库
- bzip2,xz压缩工具
- curl,wget等网络传输工具
- ncurses,readline等终端交互式库
通过conda,这些非Python软件包可以方便地在不同的操作系统环境下被管理和安装,并且能够自动解决复杂的依赖关系,确保在一个环境中所有软件包都能正确、兼容地工作。
3.3 conda 是一个强大的环境管理工具
conda作为一个强大的环境管理工具,能够帮助用户创建和管理包含不同版本Python以及其他软件包的独立、隔离的运行环境。以下是可以使用conda管理的各种环境:
-
Python环境:
- 不同版本的Python:例如,可以创建一个基于Python 3.7的环境,同时另一个环境则基于Python 2.7。
- 特定项目所需的Python库组合:每个环境中可以安装特定版本的numpy、scipy、matplotlib等库,确保项目的依赖不会与其他项目冲突。
-
非Python环境:
- 其他编程语言环境:虽然conda以支持Python闻名,但它也可以用来管理和构建R语言、Julia、Ruby等其他语言的环境。
- 第三方软件与工具:比如数据库(如SQLite、PostgreSQL客户端),编译器(如GCC),科学计算工具(如OpenBLAS、FFTW),以及GIS软件(如GDAL、QGIS)等非Python相关的软件包。
-
跨平台环境:
- conda支持Windows、Linux和macOS等多个操作系统平台,能够在这些平台上创建和管理一致的环境。
-
多用户和团队环境:
- 在服务器或集群上,conda可以帮助系统管理员为不同的用户或团队创建和维护各自的环境配置,便于多人协作且各自拥有独立且可重现的开发或生产环境。
通过conda,用户可以方便地创建新环境、激活环境、在环境中安装或更新包、删除环境等操作,极大地简化了开发和部署过程中的环境管理工作。
相关文章:

“挖矿”系列:细说Python、conda 和 pip 之间的关系
继续挖矿,挖“金矿”! 1. Python、conda 和 pip(挖“金矿”工具) Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具,它们各自有不同的作用,但相互之间存在密切的关系: Python&…...

【自然语言处理】实验3,文本情感分析
清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢…...

2.12日学习打卡----初学RocketMQ(三)
2.12日学习打卡 目录: 2.12日学习打卡一. RocketMQ高级特性(续)消息重试延迟消息消息查询 二.RocketMQ应用实战生产端发送同步消息发送异步消息单向发送消息顺序发送消息消费顺序消息全局顺序消息延迟消息事务消息消息查询 一. RocketMQ高级特…...

<网络安全>《35 网络攻防专业课<第一课 - 网络攻防准备>》
1 主要内容 认识黑客 认识端口 常见术语与命令 网络攻击流程 VMWare虚拟环境靶机搭建 2 认识黑客 2.1 白帽、灰帽和黑帽黑客 白帽黑客是指有能力破坏电脑安全但不具恶意目的黑客。 灰帽黑客是指对于伦理和法律态度不明的黑客。 黑帽黑客经常用于区别于一般(正面…...

【实战】一、Jest 前端自动化测试框架基础入门(一) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)
文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试?5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…...

蓝桥杯Java组备赛(二)
题目1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int max Integer.MIN_VALUE;int min Integer.MAX_VALUE;double sum 0;for(int i0;i<n;i) {int x sc.nextInt()…...

人力资源智能化管理项目(day10:首页开发以及上线部署)
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 首页-基本结构和数字滚动 安装插件 npm i vue-count-to <template><div class"dashboard"><div class"container"><!-- 左侧内…...

Conda管理Python不同版本教程
Conda管理Python不同版本教程 目录 0.前提 1.conda常用命令 2.conda设置国内源(以添加清华源为例,阿里云源同样) 3.conda管理python库 4.其它 不太推荐 pyenv管理Python不同版本教程(本人另一篇博客,姊妹篇&…...

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS
从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr ,编写 js_bind_speak.lpr 如下,通过 JSBridge 调用本…...

数据结构——单链表专题
目录 1. 链表的概念及结构2. 实现单链表初始化尾插头插尾删头删查找在指定位置之前插入数据在指定位置之后插入数据删除指定位之前的节点删除指定位置之后pos节点销毁链表 3. 完整代码test.cSList.h 4. 链表的分类 1. 链表的概念及结构 在顺序表中存在一定的问题: …...

Linux:开源世界的王者
在科技世界中,Linux犹如一位低调的王者,统治着开源世界的半壁江山。对于许多技术爱好者、系统管理员和开发者来说,Linux不仅仅是一个操作系统,更是一种信仰、一种哲学。 一、开源的魅力 Linux的最大魅力在于其开源性质。与封闭的…...

⭐北邮复试刷题103. 二叉树的锯齿形层序遍历 (力扣每日一题)
103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1:输入:…...

文件上传漏洞--Upload-labs--Pass07--点绕过
一、什么是点绕过 在Windows系统中,Windows特性会将文件后缀名后多余的点自动删除,在网页源码中,通常使用 deldot()函数 对点进行去除,若发现网页源代码中没有 deldot() 函数,则可能存在 点绕过漏洞。通过点绕过漏洞&…...
MySQL高级特性篇(1)-JSON数据类型的应用
MySQL是一种常用的关系型数据库管理系统,它提供了多种数据类型,其中包括JSON数据类型。JSON(JavaScript Object Notation)是一种常用的数据交换格式,它以键值对的形式组织数据,并支持嵌套和数组结构。MySQL…...

如何用Qt实现一个无标题栏、半透明、置顶(悬浮)的窗口
在Qt框架中,要实现一个无标题栏、半透明、置顶(悬浮)的窗口,需要一些特定的设置和技巧。废话不多说,下面我将以DrawClient软件为例,介绍一下实现这种效果的四个要点。 要点一:移除标题栏&#…...

ViT: transformer在图像领域的应用
文章目录 1. 概要2. 方法3. 实验3.1 Compare with SOTA3.2 PRE-TRAINING DATA REQUIREMENTS3.3 SCALING STUDY3.4 自监督学习 4. 总结参考 论文: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 代码:https://github.com…...

Sora 的工作原理(及其意义)
原文:How Sora Works (And What It Means) 作者: DAN SHIPPER OpenAI 的新型文本到视频模型为电影制作开启了新篇章 DALL-E 提供的插图。 让我们先明确一点,我们不会急急忙忙慌乱。我们不会预测乌托邦或预言灾难。我们要保持冷静并... 你…...
Java学习笔记2024/2/16
知识点 面向对象 题目1(完成) 定义手机类,手机有品牌(brand),价格(price)和颜色(color)三个属性,有打电话call()和sendMessage()两个功能。 请定义出手机类,类中要有空参、有参构造方法,set/get方法。 …...
XLNet做文本分类
import torch from transformers import XLNetTokenizer, XLNetForSequenceClassification from torch.utils.data import DataLoader, TensorDataset # 示例文本数据 texts ["This is a positive example.", "This is a negative example.", "Anot…...

Swift 5.9 新 @Observable 对象在 SwiftUI 使用中的陷阱与解决
概览 在 Swift 5.9 中,苹果为我们带来了全新的可观察框架 Observation,它是观察者开发模式在 Swift 中的一个全新实现。 除了自身本领过硬以外,Observation 框架和 SwiftUI 搭配起来也能相得益彰,事倍功半。不过 Observable 对象…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...