管理 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

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

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

  1. 写文章 使用conda管理python环境

    使用conda管理python环境

  2. Prism 文档 第三章 管理组件之间的依赖关系

                                                                          第3章:管理组件之间的依赖关系 基于Prism库的复合应用程 ...

  3. composer(管理依赖关系的工具) 及配置信息

    Composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 配置文件 ...

  4. 推荐:使用 Anaconda 工具搭建并管理 Python 环境

    https://www.anaconda.com/distribution/#download-section  官网下载地址 https://mirror.tuna.tsinghua.edu.cn/ ...

  5. virtualenv 管理python 环境

    virualenvvirtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升级不 ...

  6. 【转】利用virtualenv管理Python环境

    virtualenv virtualenv用于创建独立的Python环境,多个python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升 ...

  7. 使用conda管理python环境和包

    操作系统:CentOS7使用virtualenv管理python虚拟环境virtualenv是一款轻量级第三方虚拟环境管理工具,不像Anaconda大小达上百M,virtualenv大小只有10M左右 ...

  8. anconda使用---使用conda管理python环境

    一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...

  9. Prism 4 文档 ---第3章 管理组件间的依赖关系

     基于Prism类库的应用程序可能是由多个松耦合的类型和服务组成的复杂应用程序,他们需要根据用户的动作发出内容和接收通知进行互动,由于他们是松耦合的,他们需要一种方式来互动和交流来传递业务功能的需求. ...

  10. 使用conda管理python环境

    一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...

随机推荐

  1. springboot踩坑&问题记录

    常见错误 莫名其妙 classes/:na 前往查看.yml 的配置问题 2.驼峰命名 是因为又用了xml配置,又在yml配置文件中用了mybatis的configuration配置,两个冲突了,不是 ...

  2. 推荐2款实用的持续集成与部署(CI&CD)自动化工具

    前言 最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自 ...

  3. Selenium 操作已打开的浏览器

    偶尔要用到,start writing 实现步骤 先启动 Chrome,打开任务管理器,找到 chrome.exe,地址栏输入 cmd,然后执行 chrome.exe --remote-debuggi ...

  4. 微软azure devops 如何搭建代理池服务器

    如果你的pipeline使用微软azure的服务器进行编译失败,提示你不能进行并行任务的话,可以自己拿一台服务器来搭建编译服务器. 目标是让你的 Organization settings -> ...

  5. 【YashanDB知识库】update/delete未选中行时,v$transaction视图没有事务,alter超时问题

    问题现象 1.alter table修改表字段名,卡住,超时. 2.查看v$transaction事务视图,没有看到事务记录. 3.问题单:调整表结构时超时 问题风险及影响 无风险 问题影响版本 客户 ...

  6. net core中byte数组如何高效转换为16进制字符串

    在 .NET Core 中,如何把 byte[] 转换为 16 进制字符串?你能想到哪些方法?什么方式性能最好?今天和大家分享几种转换方式. 往往在处理字符串性能问题时,首先应该想到的是怎么想办法减少 ...

  7. sql 查询表数据

    SELECT s.Name AS SchemaName, t.Name AS TableName, p.rows AS RowCounts--, --CAST(ROUND((SUM(a.used_pa ...

  8. 2.3.1 ChatGLM3简介与安装

    安装:pip install modelscope pip install torch==2.0.1 torchaudio torchvision -i https://pypi.tuna.tsing ...

  9. 关于AutoCAD反复弹窗Nonvalid Software Detected的解决办法

    事件起因: 客户安装的 CAD 2020 频繁弹窗Nonvalid Software Detected,报错内容:YOUR ACCESS IS NOW BLOCKED   解决办法: 在文件资源管理器 ...

  10. 【赵渝强老师】大数据分析引擎:Presto

    一.什么是Presto? 背景知识:Hive的缺点和Presto的背景 Hive使用MapReduce作为底层计算框架,是专为批处理设计的.但随着数据越来越多,使用Hive进行一个简单的数据查询可能要 ...