pip install和conda install的区别

这里写目录标题

  • 一、什么是 Python 依赖(Python Dependencies)?
    • 1. 依赖的作用
    • 2. 如何管理 Python 依赖
    • 3. 依赖管理问题
    • 4. 依赖锁定
    • 总结
  • 二、使用pip安装包+venv隔离环境
    • 方法 1:使用 venv(推荐)
      • 创建虚拟环境
      • 激活环境
      • 安装包
      • 冻结(导出)环境
      • 退出环境
      • 删除环境
    • 方法 2:使用 virtualenv(适用于 Python 2)
      • 安装 virtualenv
      • 创建环境
    • 方法 3:使用 pipenv(自动管理依赖)
      • 安装 pipenv
      • 创建和激活环境
      • 安装包
      • 导出依赖
      • 退出环境
    • 总结
  • 三、使用Conda进行包安装和环境管理
  • 四、pip install和conda install
    • 4.1 pip install vs conda install
    • 4.2 PyPI和Anaconda 仓库
      • 4.2.1 PyPI(Python Package Index)
      • 4.2.2 Anaconda 仓库
        • (1)defaults 仓库
        • (2)Conda Forge
      • 4.2.3 对比 PyPI 和 Anaconda 仓库
    • 4.3 pip install 和 conda install的安装位置
    • 4.4 如何判断conda中某个包是通过conda还是pip安装的?
    • 4.5 使用建议
  • 五、其他包管理工具
    • uv
    • poetry

一、什么是 Python 依赖(Python Dependencies)?

Python 依赖(dependencies) 指的是 某个 Python 项目运行所需的外部库或模块。这些依赖通常由 pipPython Package Index(PyPI) 或其他包管理器(如 Conda)下载和安装。


1. 依赖的作用

Python 标准库提供了一些基础功能(如 math, os, sys),但复杂的功能通常依赖 第三方库,如:

  • Web 开发: Flask, Django
  • 数据科学: numpy, pandas, matplotlib
  • 机器学习: scikit-learn, tensorflow, torch
  • 数据库: SQLAlchemy, PyMySQL

这些库通常不是 Python 内置的,需要额外安装,成为该项目的“依赖”。


2. 如何管理 Python 依赖

(1)安装依赖

pip install requests

会安装 requests 及其所有依赖项。

(2)列出已安装的依赖

pip list

(3)导出依赖(生成 requirements.txt)
如果希望在其他环境中安装相同的依赖,可以使用:

pip freeze > requirements.txt

requirements.txt 示例:

numpy==1.24.2
pandas==1.5.3
requests==2.28.2

(4)从 requirements.txt 安装依赖

pip install -r requirements.txt

3. 依赖管理问题

(1)版本冲突

  • 项目 A 需要 numpy==1.21.0
  • 项目 B 需要 numpy==1.24.0
  • 如果两个项目共享环境,可能会导致版本冲突

解决方案:

  • 使用虚拟环境(venv):
    python -m venv my_env
    source my_env/bin/activate  # Mac/Linux
    my_env\Scripts\activate  # Windows
    
  • 使用 pipenv:
    pipenv install
    pipenv shell
    

(2)依赖递归
安装 pandas 可能会自动安装 numpy,因为 pandas 依赖于 numpy。某些库的依赖会影响项目的整体结构。

解决方案

  • 定期使用 pip list --outdated 检查更新。
  • 使用 pipdeptree 可视化依赖关系:
    pip install pipdeptree
    pipdeptree
    

4. 依赖锁定

在团队开发或生产环境中,建议使用 依赖锁定 确保环境一致:

  • pip: requirements.txt
  • pipenv: Pipfile.lock
  • poetry: poetry.lock

示例:

pip freeze > requirements.txt
pip install -r requirements.txt

总结

方式用途
pip install package安装单个依赖
pip list查看当前环境的依赖
pip freeze > requirements.txt导出依赖
pip install -r requirements.txtrequirements.txt 安装依赖
venv / pipenv解决版本冲突,管理独立环境

推荐:始终使用虚拟环境来管理 Python 依赖,避免版本冲突!

二、使用pip安装包+venv隔离环境

使用 pip 安装包时,推荐结合 虚拟环境(virtual environment) 来管理 Python 依赖,避免不同项目的包版本冲突。主要方法包括 venv(Python 内置)、virtualenv(更强大)、pipenv(自动管理依赖)。

方法 1:使用 venv(推荐)

venv 是 Python 内置的虚拟环境工具,适用于大多数情况。

创建虚拟环境

python -m venv my_env  # 创建名为 my_env 的环境

激活环境

  • Windows(CMD):
    my_env\Scripts\activate
    
  • Windows(PowerShell):
    my_env\Scripts\Activate.ps1
    
  • Mac/Linux:
    source my_env/bin/activate
    

安装包

pip install package_name

冻结(导出)环境

pip freeze > requirements.txt

可用于在新环境中复现安装:

pip install -r requirements.txt

退出环境

deactivate

删除环境

rm -rf my_env  # Mac/Linux
rd /s /q my_env  # Windows

方法 2:使用 virtualenv(适用于 Python 2)

virtualenvvenv 类似,但支持更多 Python 版本,创建的环境更独立。

安装 virtualenv

pip install virtualenv

创建环境

virtualenv my_env

venv 类似的激活、安装、退出操作


方法 3:使用 pipenv(自动管理依赖)

pipenv 结合了 pipvenv,自动管理虚拟环境,并创建 Pipfile 追踪依赖。

安装 pipenv

pip install pipenv

创建和激活环境

pipenv install
pipenv shell

安装包

pipenv install package_name

导出依赖

pipenv lock

退出环境

exit

总结

方式优点适用场景
venvPython 内置,简单高效绝大多数项目
virtualenv支持 Python 2 和独立环境需要支持 Python 2 的情况
pipenv自动管理环境和依赖,安全性更高复杂项目,依赖管理严格的情况

推荐使用 venv,如果有复杂依赖管理需求可用 pipenv

三、使用Conda进行包安装和环境管理

Conda是Anaconda中一个强大的包和环境管理工具,可以在Windows的Anaconda Prompt命令行使用,也可以在macOS或者Linux系统的终端窗口(terminal window)的命令行使用。
如何下载及使用Anaconda进行包管理和环境管理,推荐文章:https://blog.csdn.net/chenxy_bwave/article/details/119996001

四、pip install和conda install

4.1 pip install vs conda install

pip installconda install` 都是 Python 包管理工具,但它们的工作方式和适用场景不同:

特性pip installconda install
管理工具pip (Python 包管理器)conda (Anaconda 包管理器)
包来源PyPI(Python Package Index)Anaconda 仓库(含 Conda Forge、defaults)
支持的包类型仅 Python 相关的包不仅支持 Python 包,还支持 C/C++ 依赖包(如 numpyscipy 等的底层依赖)
依赖管理仅管理 Python 依赖,需手动解决非 Python 依赖问题自动管理 Python 和非 Python 依赖
虚拟环境管理结合 venvvirtualenv 使用结合 conda 环境使用
安装方式直接安装 .whl.tar.gz使用预编译的二进制包(更快、更稳定)
速度和兼容性可能因编译问题导致安装失败通常安装更快,兼容性更好

4.2 PyPI和Anaconda 仓库

4.2.1 PyPI(Python Package Index)

Python Package Index(PyPI) 是 Python 官方的软件包仓库,类似于软件商店,开发者可以在上面发布 Python 库,用户可以通过 pip install 下载和安装这些库。

  • 官网: https://pypi.org
  • 安装命令: pip install package_name
  • 包格式: .whl(Wheel)或 .tar.gz(源代码)
  • 特点:
    • 通用性强,支持所有 Python 发行版(CPython、PyPy等)
    • 只包含 Python 相关的包,不提供 C/C++ 依赖项
    • 可能需要编译,某些包依赖于 C/C++ 库,需要额外安装依赖(如 numpyscipy

4.2.2 Anaconda 仓库

Anaconda 主要面向 数据科学机器学习,它的包管理系统 Conda 维护了多个官方和社区仓库,包括defaluts仓库和Conda Forge仓库。

(1)defaults 仓库
  • Anaconda 官方维护,默认包含的包源。预编译好的二进制包,安装速度快,兼容性强
  • 适用于数据科学、机器学习的常见库(如 numpy, pandas, scipy, matplotlib
  • 安装命令: conda install package_name
(2)Conda Forge
  • 社区驱动 的 Conda 仓库,包含更多第三方库,维护更新比 defaults 更快,包的种类更多
  • 安装时可以用 -c conda-forge 指定
    conda install -c conda-forge package_name
    
  • 适用于 defaults 没有的包,或者需要较新版本的包

4.2.3 对比 PyPI 和 Anaconda 仓库

特性PyPI(pip)Anaconda(conda)
主要用途通用 Python 库科学计算、数据分析
包管理工具pipconda
包来源PyPIdefaults, Conda Forge
依赖管理仅 Python 依赖Python + C/C++ 依赖
安装速度可能较慢,需编译预编译,通常更快
兼容性可能出现依赖冲突依赖管理更完善

使用建议:数据科学/机器学习领域,优先使用 conda install(默认 defaults,如果缺少可以用 conda-forge

4.3 pip install 和 conda install的安装位置

  • conda install xxx:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。
  • pip install xxx:分两种情况,一种情况就是当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到anaconda3/envs/current_env/lib/python3.x/site-packages文件夹中,如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages文件夹中

4.4 如何判断conda中某个包是通过conda还是pip安装的?

执行​ conda list ,用pip安装的包显示的build项目为pypi。如下图所示:
在这里插入图片描述

4.5 使用建议

  • 如果你使用 AnacondaMiniconda,建议优先使用 conda install,特别是涉及 数据科学机器学习科学计算(如 numpy, pandas, tensorflow)。
  • 如果包 仅在 PyPI 可用使用标准 Python 生态,可以用 pip install
  • 也可以 混合使用
    1. 先用 conda install 安装基础环境(如 numpy, scipy, matplotlib)。
    2. 再用 pip install 安装 Conda 仓库中没有的包

示例

conda create -n my_env python=3.9
conda activate my_env
conda install numpy pandas
pip install some_package_not_in_conda

这样可以兼顾 conda 的稳定性和 pip 的灵活性。

五、其他包管理工具

uv

是一个高性能的 Python 包管理工具,旨在替代 pip,提供更快的包安装速度。

poetry

poetry 是一个现代化的 Python 包管理和构建工具,集成了依赖管理、虚拟环境管理和包发布功能。特点如下:

  • 功能:集成依赖管理、虚拟环境管理和包发布。
  • 依赖管理:使用 pyproject.toml 和 poetry.lock 文件记录依赖,自动解析并安装所需库。
  • 环境管理:自动为每个项目创建和管理虚拟环境,确保项目独立性。
  • 包发布:简化包的构建和发布流程,支持发布到 PyPI 等包索引。
  • 适用场景:适合大型或复杂项目,需要严格依赖管理和包发布功能的情况。

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

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

相关文章

R语言高效数据处理-自定义EXCEL数据排版

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散 1、自定义excel表数据输出格式、布局 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给需求方时减少手动调整的环节很有必要 #1.1设置表头格式 header_style <- createStyle(font…

Word 小黑第4套

对应大猫41 上下日期是一起变动的&#xff0c;删掉第一个&#xff0c;第二个日期格式&#xff08;文件 -选项 -自定义功能区 -选上开发工具&#xff09; 点开发工具 -属性 选择相应的日期格式&#xff09; 修改标题样式时&#xff0c;标题三只有点标题二时才会显示 右击正文样…

酒店宾馆IPTV数字电视系统:创新宾客体验,引领智慧服务新潮流

酒店宾馆IPTV数字电视系统&#xff1a;创新宾客体验&#xff0c;引领智慧服务新潮流 北京海特伟业科技有限公司任洪卓于2025年3月15日发布 随着智慧酒店的不断发展&#xff0c;宾客对于酒店内的娱乐和信息服务需求日益多样化&#xff0c;传统的电视服务已难以满足现代宾客的高…

jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

无法转为PDF 手动下载工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一样&#xff0c;还有新的报错 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意儿 sudo apt-get install texlive-xetex texlive-fon…

如何在 VS编译器上使用 C99规定的变长数组------使用Clang工具

VS编译器默认处理代码的工具是 MSVC&#xff0c;而MSVC工具是无法处理变长数组的&#xff0c;这个时候我们就要换一个处理代码的工具了----Clang 1 int n 9; 2 int arr[n];// 数组长度可以拟定1.打开 Visual Stdudio Intaller 2.点击修改&#xff0c;鼠标下滑找到>>使用…

vue echarts封装使用

echarts 尺寸自动调节 resize.js 柱状图 components/dashboard/lineChart.vue <template><div :class"className" :style"{height:height,width:width}" /> </template><script> import echarts from echarts require(echarts/…

《计算机图形学》第二课笔记-----二维变换的推导

前言&#xff1a;为什么这么突兀的把这一节内容放在了第二课&#xff0c;第一是因为我急于求成&#xff0c;第二是因为这一章节太重要了&#xff0c;这几乎是二维三维变换的最核心的东西&#xff0c;理解了这一章节内容&#xff0c;后面的就会像打通了任督二脉一样&#xff0c;…

OTP单片机调试工具之—单线数据编码

OTP单片机调试工具在实现过程中离不开单线数据的传输&#xff0c;那么使用哪一种方式的数据编码会比较好呢&#xff1f; 我所了解的主要有以下三种&#xff1a; 1.UART&#xff08;串口&#xff09;&#xff0c;这种方式在单片机和pc之间进行传输都非常常见&#xff0c;效率比较…

背诵--2

DAY01 面向对象回顾、继承、抽象类 学习目标 能够写出类的继承格式public class 子类 extends 父类{}public class Cat extends Animal{} 能够说出继承的特点子类继承父类,就会自动拥有父类非私有的成员 能够说出子类调用父类的成员特点1.子类有使用子类自己的2.子类没有使用…

穷举vs暴搜vs深搜vs回溯vs剪枝刷题 + 总结

文章目录 全排列题解代码 子集题解代码 总结 全排列 题目链接 题解 1. 画一颗决策树 2. 全局变量&#xff1a; int[ ][ ] ret&#xff1a;用于存结果的二维数组 int[ ] path&#xff1a;用于存每次路径的答案 bool[ ] check&#xff1a;判断这个数是否已经用过&#xff0c;…

深度学习中学习率调整策略

学习率衰减策略是深度学习优化过程中的一个关键因素&#xff0c;它决定了训练过程中学习率的调整方式&#xff0c;从而影响模型收敛的速度和效果。不同的衰减策略在不同的任务和模型上可能有不同的表现&#xff0c;下面从我用到过的几个衰减策略进行记录&#xff0c;后续慢慢跟…

《Electron 学习之旅:从入门到实践》

前言 Electron 简介 Electron 是由 GitHub 开发的一个开源框架&#xff0c;基于 Chromium 和 Node.js。 它允许开发者使用 Web 技术&#xff08;HTML、CSS、JavaScript&#xff09;构建跨平台的桌面应用程序。 Electron 的优势 跨平台&#xff1a;支持 Windows、macOS 和 Linux…

UBuntu24.04-JDK7-TOMCAT7安装

jdk7 apt-get 找不到。 tomcat7 也没找到。 以下是安装成功的&#xff0c;供大家参考。 1.JAVA openjdk-7-jdk /usr/lib/jvm/java-7-openjdk-amd641.安装指定版本apt search jdk //查找版本sudo apt install default-jdk //此为默认版本sudo apt install ope…

美畅物联丨WebRTC 技术详解:构建实时通信的数字桥梁

在互联网技术飞速发展的今天&#xff0c;实时通信已成为数字生活的核心需求。WebRTC作为一个开源项目&#xff0c;凭借卓越的技术实力与创新理念&#xff0c;为网页和移动应用带来了颠覆性的实时通信能力。它突破了传统通信方式的限制&#xff0c;实现了音频、视频和数据在用户…

驾驭 DeepSeek 科技之翼,翱翔现代学习新天际

在当今这个信息爆炸的时代&#xff0c;学习的方式和途径正在经历着前所未有的变革。人工智能技术的飞速发展&#xff0c;为我们的学习带来了全新的机遇和挑战。DeepSeek 作为一款强大的大语言模型&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;为现代学习注入了新的活力…

写时拷贝技术

目录 写时拷贝 核心思想 基本原理 基本过程 一个例子深入理解 补充知识--引用计数 小总结 写时拷贝实现 宏观理解&#xff08;进程、线程角度&#xff09; 资源共享 只读访问 写操作触发拷贝 独立修改 微观理解&#xff08;fork系统调用角度&#xff09; 进程创…

requests库的request和response对象的属性和方法

Python requests库 request 参数信息 response 参数信息

MySQL数据库操作

目录 SQL语句 1、SQL的背景 2、SQL的概念 SQL的分类 SQL的书写规范 MySQL数据库 1、MySQL数据库的编码 &#xff08;1&#xff09;utf8和utf8mb4的区别 &#xff08;2&#xff09;MySQL的字符集 &#xff08;3&#xff09;MySQL默认编码为 latin1 &#xff0c;如何更改…

Blender-MCP服务源码5-BlenderSocket插件安装

Blender-MCP服务源码5-BlenderSocket插件安装 上一篇讲述了Blender是基于Socket进行本地和远程进行通讯&#xff0c;现在尝试将BlenderSocket插件安装到Blender中进行功能调试 1-核心知识点 将开发的BlenderSocket插件安装到Blender中 2-思路整理 1&#xff09;将SocketServe…

Androidstudio实现一个app引导页(超详细)

文章目录 1. 功能需求2. 代码实现过程1. 创建布局文件2. 创建引导页的Adapter3. 实现引导页Activity4. 创建圆点指示器的Drawable5. 创建“立即体验”按钮的圆角背景 2.效果图 1. 功能需求 1、需要和原型图设计稿对应的元素保持一致的样式。 2、引导页需要隐藏导航栏&#xff…