管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的区别
管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的区别
venv、virtualenv、pipenv、Poetry、Miniforge 和 Anaconda 都是用于管理 Python 环境和依赖关系的工具,但它们在功能和使用场景上有一些显著的区别。以下是它们的主要区别:
venv
轻量级:
venv是 Python 3.3 及以上版本标准库的一部分,专门用于创建 Python 虚拟环境。- 它非常轻量,只提供基本的虚拟环境管理功能。
环境管理:
venv可以创建独立的 Python 虚拟环境,每个环境有自己的一套 Python 解释器和包。- 使用
venv创建的环境通常较小,因为它们只包含必要的 Python 包。
包管理:
venv本身不提供包管理功能,通常与pip结合使用来安装和管理 Python 包。- 需要手动管理
requirements.txt文件来记录项目的依赖关系。
使用场景:
- 适用于简单的 Python 项目,特别是那些只需要管理 Python 包和虚拟环境的项目。
- 适用于对环境管理要求不高的开发场景。
使用示例:
在命令行中,使用
python3 -m venv myenv创建一个名为myenv的虚拟环境。python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活环境 Linux/macOS
myenv\Scripts\activate # 激活环境 Windows
pip install requests # 安装包
virtualenv
独立工具:
virtualenv是一个独立的第三方工具,用于创建 Python 虚拟环境。- 它比
venv更早出现,功能也更丰富一些。适用于 Python 2 和 Python 3。
环境管理:
virtualenv可以创建独立的 Python 虚拟环境,每个环境有自己的一套 Python 解释器和包。- 提供了一些高级选项,如指定 Python 解释器版本、复制系统站点包等。
包管理:
virtualenv本身不提供包管理功能,通常与pip结合使用来安装和管理 Python 包。- 需要手动管理
requirements.txt文件来记录项目的依赖关系。
使用场景:
- 适用于需要更多自定义选项的 Python 项目。
- 适用于需要兼容早期 Python 版本的项目。
使用示例:
安装并创建虚拟环境:
pip install virtualenv # 安装 virtualenv
virtualenv myenv # 创建虚拟环境
source myenv/bin/activate # 激活环境 Linux/macOS
myenv\Scripts\activate # 激活环境 Windows
pip install requests # 安装包
pipenv
集成工具:
pipenv是一个集成了virtualenv和pip的工具,用于管理虚拟环境和依赖关系。- 它使用
Pipfile和Pipfile.lock文件来管理项目的依赖关系。
环境管理:
pipenv会自动为每个项目创建和管理一个独立的虚拟环境,避免不同项目之间的依赖冲突。- 可以轻松地激活和停用虚拟环境。
包管理:
pipenv自动处理依赖关系的解析和安装,确保项目的所有依赖都能正确安装。- 生成和管理
Pipfile.lock文件,确保在不同环境中安装相同的依赖版本,支持语义化版本管理。
使用场景:
- 适用于需要管理虚拟环境和依赖关系的中等复杂度的 Python 项目。
- 适用于需要自动处理依赖关系解析和安装的项目。
使用示例:
需要单独安装
pipenv,通常通过pip安装:pip install pipenv # 安装 pipenv
pipenv install requests # 安装包
pipenv shell # 激活虚拟环境
Poetry
多功能:
Poetry是一个现代的 Python 包管理和环境管理工具,不仅管理虚拟环境,还管理项目的依赖关系。- 它使用
pyproject.toml文件来管理项目的依赖关系,这个文件是 PEP 518 推荐的标准配置文件。
环境管理:
Poetry会自动为每个项目创建和管理一个独立的虚拟环境,避免不同项目之间的依赖冲突。- 可以轻松地激活和停用虚拟环境。
包管理:
Poetry自动处理依赖关系的解析和安装,确保项目的所有依赖都能正确安装。- 生成和管理
lock文件(poetry.lock),确保在不同环境中安装相同的依赖版本。
包发布:
Poetry提供了简便的命令来打包和发布 Python 包到 PyPI 或其他私有仓库。- 自动生成
setup.py和MANIFEST.in文件,简化发布流程。
版本管理:
Poetry支持语义化版本管理,可以方便地管理项目的版本号。- 提供命令来增加版本号并生成相应的变更日志。
使用场景:
- 适用于需要精细依赖管理和虚拟环境管理的复杂 Python 项目。
- 适用于需要自动化和简化包发布流程的项目。
- 适用于需要跨平台支持的项目。
使用示例:
Poetry提供了丰富的命令行工具,可以轻松地管理依赖项、构建和发布项目。pip install poetry
poetry new my_project
cd my_project
poetry add requests
poetry install # 创建虚拟环境并安装依赖
Miniforge
Anaconda 替代品:
Miniforge是一个轻量级的 Anaconda 替代品,基于 Conda 包管理器。- 它提供了与 Anaconda 类似的功能,但体积更小,安装更快。
- 由
conda-forge社区维护。
环境管理:
Miniforge使用 Conda 来管理虚拟环境,可以创建独立的环境,每个环境有自己的一套 Python 解释器和包。- 提供了丰富的环境管理功能,如环境导出和导入。
包管理:
Miniforge使用 Conda 来管理包,Conda 是一个跨平台的包管理系统,支持多种语言和工具。- 可以安装来自 Anaconda 仓库和其他自定义仓库的包。
使用场景:
- 适用于需要管理复杂依赖关系和多语言环境的项目。
- 适用于需要高性能计算和科学计算的项目。
- 适用于需要跨平台支持的项目。
使用示例:
# 安装 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
综合包管理器:
AnaConda是一个开源的包管理和环境管理系统,支持多种语言和工具,而不仅仅是 Python。- 它提供了强大的依赖解析和包管理功能。
环境管理:
AnaConda可以创建独立的环境,每个环境有自己的一套 Python 解释器和包。- 提供了丰富的环境管理功能,如环境导出和导入。
- 使用
environment.yml文件来定义环境和依赖。
包管理:
AnaConda可以安装来自 Anaconda 仓库和其他自定义仓库的包。- 支持二进制包,安装速度快,适合大型科学计算和数据科学项目。
使用场景:
- 适用于需要管理复杂依赖关系和多语言环境的项目。
- 适用于需要高性能计算和科学计算的项目。
- 适用于需要跨平台支持的项目。
- 适用于需要综合的包管理和环境管理功能的项目。
使用示例:
# 安装 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 项目。
- 自动处理依赖关系解析和安装。
- 提供了
Pipfile和Pipfile.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 的区别的更多相关文章
- 写文章 使用conda管理python环境
使用conda管理python环境
- Prism 文档 第三章 管理组件之间的依赖关系
第3章:管理组件之间的依赖关系 基于Prism库的复合应用程 ...
- composer(管理依赖关系的工具) 及配置信息
Composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 配置文件 ...
- 推荐:使用 Anaconda 工具搭建并管理 Python 环境
https://www.anaconda.com/distribution/#download-section 官网下载地址 https://mirror.tuna.tsinghua.edu.cn/ ...
- virtualenv 管理python 环境
virualenvvirtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升级不 ...
- 【转】利用virtualenv管理Python环境
virtualenv virtualenv用于创建独立的Python环境,多个python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. 套件升 ...
- 使用conda管理python环境和包
操作系统:CentOS7使用virtualenv管理python虚拟环境virtualenv是一款轻量级第三方虚拟环境管理工具,不像Anaconda大小达上百M,virtualenv大小只有10M左右 ...
- anconda使用---使用conda管理python环境
一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...
- Prism 4 文档 ---第3章 管理组件间的依赖关系
基于Prism类库的应用程序可能是由多个松耦合的类型和服务组成的复杂应用程序,他们需要根据用户的动作发出内容和接收通知进行互动,由于他们是松耦合的,他们需要一种方式来互动和交流来传递业务功能的需求. ...
- 使用conda管理python环境
一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...
随机推荐
- ubuntu16.04/CentOS 7自动以root身份登录桌面
ubuntu16.04 1.首先设置root用户密码: # sudo passwd root 输入普通用户密码,再输入root用户密码: 2.启用登录时的root选项: # 编辑50-ubuntu.c ...
- 防止npm被墙的小技巧
方法一: 全局安装中国服务器的包管理工具 npm i cnpm --global 下载包的时候用cnpm取代npm 方法二: 在小黑板输入:npm config set registry https: ...
- MiniMax:如何基于 JuiceFS 构建高性能、低成本的大模型 AI 平台
MiniMax 成立于 2021 年 12 月,是领先的通用人工智能科技公司,致力于与用户共创智能.MiniMax 自主研发了不同模态的通用大模型,其中包括万亿参数的 MoE 文本大模型.语音大模型以 ...
- c程序设计语言 by K&R(一)一些c语言基础知识
出自<c程序设计语言> by K&R: 一.导言 二.类型.运算符与表达式 三.控制流 1. 字符输入与输出 getchar() 和 putchar(),输入一个字符.输出一个字符 ...
- SQL SERVER (MSSQL) 学习笔记 性能
refer: 看懂SqlServer查询计划 How do I identify slow queries in sql server? join operator, hash, merge, nes ...
- Asp.net core 学习笔记 Image processing (ImageSharp)
请移步修订版 : ASP.NET Core Library – ImageSharp .net 的生态烂是真的, 很多硬需求都没有人做, 开源的做着做着就闭源了的也很多. 今天说说 image pro ...
- Parquet.Net: 将 Apache Parquet 移植到 .NET
Parquet.Net 是一个用于读取和写入 Apache Parquet 文件的纯 .NET 库,使用MIT协议开源,github仓库:https://github.com/aloneguid/pa ...
- SpringMVC——SSM整合——项目异常处理
项目异常处理 项目异常分类 业务异常 不规范的用户行为产生的异常 规范的用户行为产生的异常 系统异常 项目运行过程中可预计且无法避免的异常 其他异常 编程人员未预期到的异常 项 ...
- 多线程ExecutorService 的理解与使用
原文链接:https://www.cnblogs.com/gxz-sw/p/6754476.html 接口 Java.util.concurrent.ExecutorService 表述了异步执行的机 ...
- 关于AutoCAD反复弹窗Nonvalid Software Detected的解决办法
事件起因: 客户安装的 CAD 2020 频繁弹窗Nonvalid Software Detected,报错内容:YOUR ACCESS IS NOW BLOCKED 解决办法: 在文件资源管理器 ...