管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的区别

news/2024/11/13 17:15:53/文章来源:https://www.cnblogs.com/weiqinl/p/18539710

管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的区别

venvvirtualenvpipenvPoetryMiniforgeAnaconda 都是用于管理 Python 环境和依赖关系的工具,但它们在功能和使用场景上有一些显著的区别。以下是它们的主要区别:

venv

  1. 轻量级

    • venv 是 Python 3.3 及以上版本标准库的一部分,专门用于创建 Python 虚拟环境。
    • 它非常轻量,只提供基本的虚拟环境管理功能。
  2. 环境管理

    • venv 可以创建独立的 Python 虚拟环境,每个环境有自己的一套 Python 解释器和包。
    • 使用 venv 创建的环境通常较小,因为它们只包含必要的 Python 包。
  3. 包管理

    • venv 本身不提供包管理功能,通常与 pip 结合使用来安装和管理 Python 包。
    • 需要手动管理 requirements.txt 文件来记录项目的依赖关系。
  4. 使用场景

    • 适用于简单的 Python 项目,特别是那些只需要管理 Python 包和虚拟环境的项目。
    • 适用于对环境管理要求不高的开发场景。
  5. 使用示例

    • 在命令行中,使用 python3 -m venv myenv 创建一个名为 myenv 的虚拟环境。

      python3 -m venv myenv      # 创建虚拟环境
      source myenv/bin/activate  # 激活环境 Linux/macOS
      myenv\Scripts\activate     # 激活环境 Windows
      pip install requests       # 安装包
      

virtualenv

  1. 独立工具

    • virtualenv 是一个独立的第三方工具,用于创建 Python 虚拟环境。
    • 它比 venv 更早出现,功能也更丰富一些。适用于 Python 2 和 Python 3。
  2. 环境管理

    • virtualenv 可以创建独立的 Python 虚拟环境,每个环境有自己的一套 Python 解释器和包。
    • 提供了一些高级选项,如指定 Python 解释器版本、复制系统站点包等。
  3. 包管理

    • virtualenv 本身不提供包管理功能,通常与 pip 结合使用来安装和管理 Python 包。
    • 需要手动管理 requirements.txt 文件来记录项目的依赖关系。
  4. 使用场景

    • 适用于需要更多自定义选项的 Python 项目。
    • 适用于需要兼容早期 Python 版本的项目。
  5. 使用示例

    • 安装并创建虚拟环境:

      pip install virtualenv     # 安装 virtualenv
      virtualenv myenv           # 创建虚拟环境
      source myenv/bin/activate  # 激活环境 Linux/macOS
      myenv\Scripts\activate     # 激活环境 Windows
      pip install requests       # 安装包
      

pipenv

  1. 集成工具

    • pipenv 是一个集成了 virtualenvpip 的工具,用于管理虚拟环境和依赖关系。
    • 它使用 PipfilePipfile.lock 文件来管理项目的依赖关系。
  2. 环境管理

    • pipenv 会自动为每个项目创建和管理一个独立的虚拟环境,避免不同项目之间的依赖冲突。
    • 可以轻松地激活和停用虚拟环境。
  3. 包管理

    • pipenv 自动处理依赖关系的解析和安装,确保项目的所有依赖都能正确安装。
    • 生成和管理 Pipfile.lock 文件,确保在不同环境中安装相同的依赖版本,支持语义化版本管理。
  4. 使用场景

    • 适用于需要管理虚拟环境和依赖关系的中等复杂度的 Python 项目。
    • 适用于需要自动处理依赖关系解析和安装的项目。
  5. 使用示例

    • 需要单独安装 pipenv,通常通过 pip 安装:

      pip install pipenv    # 安装 pipenv
      pipenv install requests # 安装包
      pipenv shell  # 激活虚拟环境
      

Poetry

  1. 多功能

    • Poetry 是一个现代的 Python 包管理和环境管理工具,不仅管理虚拟环境,还管理项目的依赖关系。
    • 它使用 pyproject.toml 文件来管理项目的依赖关系,这个文件是 PEP 518 推荐的标准配置文件。
  2. 环境管理

    • Poetry 会自动为每个项目创建和管理一个独立的虚拟环境,避免不同项目之间的依赖冲突。
    • 可以轻松地激活和停用虚拟环境。
  3. 包管理

    • Poetry 自动处理依赖关系的解析和安装,确保项目的所有依赖都能正确安装。
    • 生成和管理 lock 文件(poetry.lock),确保在不同环境中安装相同的依赖版本。
  4. 包发布

    • Poetry 提供了简便的命令来打包和发布 Python 包到 PyPI 或其他私有仓库。
    • 自动生成 setup.pyMANIFEST.in 文件,简化发布流程。
  5. 版本管理

    • Poetry 支持语义化版本管理,可以方便地管理项目的版本号。
    • 提供命令来增加版本号并生成相应的变更日志。
  6. 使用场景

    • 适用于需要精细依赖管理和虚拟环境管理的复杂 Python 项目。
    • 适用于需要自动化和简化包发布流程的项目。
    • 适用于需要跨平台支持的项目。
  7. 使用示例

    • Poetry 提供了丰富的命令行工具,可以轻松地管理依赖项、构建和发布项目。
      pip install poetry
      poetry new my_project
      cd my_project
      poetry add requests
      poetry install  # 创建虚拟环境并安装依赖
      

Miniforge

  1. Anaconda 替代品

    • Miniforge 是一个轻量级的 Anaconda 替代品,基于 Conda 包管理器。
    • 它提供了与 Anaconda 类似的功能,但体积更小,安装更快。
    • conda-forge 社区维护。
  2. 环境管理

    • Miniforge 使用 Conda 来管理虚拟环境,可以创建独立的环境,每个环境有自己的一套 Python 解释器和包。
    • 提供了丰富的环境管理功能,如环境导出和导入。
  3. 包管理

    • Miniforge 使用 Conda 来管理包,Conda 是一个跨平台的包管理系统,支持多种语言和工具。
    • 可以安装来自 Anaconda 仓库和其他自定义仓库的包。
  4. 使用场景

    • 适用于需要管理复杂依赖关系和多语言环境的项目。
    • 适用于需要高性能计算和科学计算的项目。
    • 适用于需要跨平台支持的项目。
  5. 使用示例

    # 安装 Miniforge - Linux
    wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
    bash Miniforge3-Linux-x86_64.sh# 创建环境
    conda create --name my_env python=3.13
    conda activate my_env# 安装包
    conda install requests
    

AnaConda

  1. 综合包管理器

    • AnaConda 是一个开源的包管理和环境管理系统,支持多种语言和工具,而不仅仅是 Python。
    • 它提供了强大的依赖解析和包管理功能。
  2. 环境管理

    • AnaConda 可以创建独立的环境,每个环境有自己的一套 Python 解释器和包。
    • 提供了丰富的环境管理功能,如环境导出和导入。
    • 使用 environment.yml 文件来定义环境和依赖。
  3. 包管理

    • AnaConda 可以安装来自 Anaconda 仓库和其他自定义仓库的包。
    • 支持二进制包,安装速度快,适合大型科学计算和数据科学项目。
  4. 使用场景

    • 适用于需要管理复杂依赖关系和多语言环境的项目。
    • 适用于需要高性能计算和科学计算的项目。
    • 适用于需要跨平台支持的项目。
    • 适用于需要综合的包管理和环境管理功能的项目。
  5. 使用示例

    # 安装 Anaconda 或 Miniconda
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
    bash Miniconda3-latest-Linux-x86_64.sh# 创建环境
    conda create --name my_env python=3.13
    conda activate my_env# 安装包
    conda install requests
    

总结

  • venv

    • 适用于简单的 Python 项目。
    • 只提供基本的虚拟环境管理功能。
    • 需要手动管理依赖关系。
    • 轻量级,易于使用。
  • virtualenv

    • 适用于需要更多自定义选项的 Python 项目。
    • 提供了一些高级选项,如指定 Python 解释器版本。
    • 需要手动管理依赖关系。
    • 适用于需要兼容早期 Python 版本的项目。
  • pipenv

    • 适用于需要管理虚拟环境和依赖关系的中等复杂度的 Python 项目。
    • 自动处理依赖关系解析和安装。
    • 提供了 PipfilePipfile.lock 文件来管理依赖关系。
  • Poetry

    • 适用于复杂的 Python 项目。
    • 提供全面的包管理和环境管理功能。
    • 自动处理依赖关系和版本管理。
    • 提供简便的包发布流程。
    • 功能强大,但相对复杂一些。
  • Miniforge

    • 适用于需要管理复杂依赖关系和多语言环境的项目。
    • 适用于需要高性能计算和科学计算的项目。
    • 适用于需要跨平台支持的项目。
    • 轻量级的 Anaconda 替代品。
  • Anaconda

    • 适用于需要管理复杂依赖关系和多语言环境的项目。
    • 适用于需要高性能计算和科学计算的项目。
    • 适用于需要跨平台支持的项目。
    • 综合性强,功能全面。

使用场景

  • 使用 venv

    • 简单的 Python 项目。
    • 需要轻量级虚拟环境管理的项目。
    • 只需要管理 Python 包的项目。
  • 使用 virtualenv

    • 需要更多自定义选项的 Python 项目。
    • 需要兼容早期 Python 版本的项目。
  • 使用 pipenv

    • 中等复杂度的 Python 项目。
    • 需要自动处理依赖关系解析和安装的项目。
  • 使用 Poetry

    • 复杂的 Python 项目。
    • 需要精细依赖管理和虚拟环境管理的项目。
    • 需要自动化和简化包发布流程的项目。
  • 使用 Miniforge

    • 需要管理复杂依赖关系和多语言环境的项目。
    • 需要高性能计算和科学计算的项目。
    • 需要跨平台支持的项目。
    • 希望使用轻量级的 Anaconda 替代品。
  • 使用 Anaconda

    • 需要管理复杂依赖关系和多语言环境的项目。
    • 需要高性能计算和科学计算的项目。
    • 需要跨平台支持的项目。
    • 需要综合的包管理和环境管理功能。

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

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

相关文章

手把手教你搭建OpenDRIVE道路模型(上)

在自动驾驶技术的研发与验证阶段,OpenDRIVE格式的数据被广泛应用于仿真测试平台的搭建,帮助开发者在虚拟环境中对算法进行高效迭代与优化,从而加速自动驾驶技术的商业化进程,推动汽车行业向更加智能化、自主化的未来发展。 OpenDRIVE作为一种高度专业化的道路建模标准…

SpringBoot项目引入Elasticsearch时启动失败

1、前情提要: https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/installation.html 以上是Elasticsearch对接Java的官方文档(pom依赖部分)我本地Windows安装的Elasticsearch也是8.15.3版本 2、启动报错 *************************** APPLICA…

四款超实用的免费报表工具推荐!轻松选择适合你的数据神器

现如今,报表工具逐渐成为企业数据分析和决策的重要一环。本文将为大家介绍四款免费报表工具,通过这些工具,用户可以轻松地将原始数据转换为直观易懂的报表,帮助决策者更快地获取信息和做出判断。无论是寻求简单易用、实时更新,还是需要强大的数据分析能力的用户,都能在这…

联训题单 / 集训杂题纪要

UPD: 新增了杂题选改栏 总览题单 进度 备注数据结构1 4/24 数据结构可爱捏 >_<搜索 模拟 All Clear/10 搜索可爱捏 >_<数学1 0/11 数学不可爱捏 `-字符串 6/13 哈希可爱捏 >_<杂题选改 7 杂题专题没了,杂题倒是有不少数据结构 1 STEP 读假题了,读成下面这…

Python 提取PowerPoint文档中的图片

如果你需要在多个PowerPoint演示文稿中使用相同的图片,直接从原始PPT中提取并保存图片可以避免重复寻找和下载。此外,将PPT中的重要图片提取出来可以将其作为备份,以防原文件损坏或丢失。本文将通过以下两个示例介绍如何使用Python提取PPT文档中的图片。Python 提取指定幻灯…

高级语言程序设计课程第七次个人作业

班级:https://edu.cnblogs.com/campus/fzu/2024C 作业要求:https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400121 姓名:林永庆 12 从左到右,从上到下,从右到左,从下到上345678总结:菜就多练 反思:菜就多练

解线性方程组迭代法

解线性方程组迭代法 在数值分析中,迭代法是解决大规模线性方程组的重要工具。迭代法可以有效地减少计算复杂度,使得求解效率更高。本文将从前置知识开始,介绍向量和矩阵的范数,再深入探讨求解线性方程组的 Jacobi 和 Gauss-Seidel 迭代法。 一、前置知识:向量和矩阵的范数…

Linux kernel 堆溢出利用方法(二)

本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kernel off-by-null + docker escape来深入了解这种漏洞的利用手法。前言 本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通…

wpf项目使用winform控件

环境:Win10、VS2017 一、新建WPF项目 2. WPF项目添加System.Windows.Forms和WindowsFormsIntegration引用 3. 编写WPF窗体代码 3.1. 头部添加引用1 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 2 xmlns:wfi ="clr-namespac…

Spring带泛型的ApplicationEvent无法监听问题分析(转载)

1 背景 在开发过程中,经常遇到发送事件来通知其他模块进行相应的业务处理;笔者实用的是spring自带的ApplicationEventPublisher和EventListener进行事件的发收; 但是开发时遇到一个问题: 如果事件很多,但是事件模式都差不多,就需要定义很多事件类来分别表示各种事件,例如…

PG 修改表结构提示有试图依赖的处理方法

ALTER TABLE victim ALTER COLUMN victim_belong_url TYPE varchar(1000) USING victim_belong_url::varchar(1000); 修改字段长度 通过修改 pg_attribute 基表的方式来绕开这个限制#通过表名查出attrelid SELECT relname, attname,attnum,attrelid,attname FROM pg_class c,pg…

OMV安装文件管理器filebrowser和照片管理photoprism插件时Pull不了镜像的解决办法

OMV安装文件管理器filebrowser和照片管理photoprism插件安装后不能启动服务或者PULL不了镜像卡着不动都是因为现在国内pull不了镜像的原因 这里有个迷惑的人的地方是很多朋友认为是用docker来pull的镜像,于是增加了docker国内加速源后发现OMV还是拉取不了镜像。解决方法如下:…