当前位置: 首页 > article >正文

python开发环境管理和包管理

在 Python 开发中,环境管理包管理 是两个非常重要的概念。它们帮助开发者:

这里写目录标题

  • 一、什么是 Python 环境管理?
  • 二、什么是 Python 包管理?
  • 三、常见文件说明(用于包管理和环境配置)
  • 四、典型流程示例(以 venv + pip 为例)
  • 五、现代工具对比(poetry vs pipenv vs conda)
  • 选择建议

一、什么是 Python 环境管理?

Python 环境管理 是指创建和管理多个隔离的 Python 运行环境,使得每个项目可以使用不同的解释器版本和依赖库版本。常用工具有:

工具功能说明
venv(标准库模块)Python 3.3+ 自带,用于创建轻量级虚拟环境
virtualenv更老但更灵活的虚拟环境工具,兼容 Python 2.x 和 3.x
pyenv管理多个 Python 解释器版本(如切换 3.8、3.9、3.10)
conda可以同时管理 Python 版本和虚拟环境(推荐用于数据科学)
poetry / pipenv同时支持虚拟环境和包管理的一体化工具

二、什么是 Python 包管理?

Python 包管理 是指对 Python 第三方库的安装、卸载、更新和版本控制的过程。常用工具:

工具功能说明
pipPython 的默认包管理器,用于安装和管理第三方库(如 pip install requests
setuptools构建和发布 Python 包的标准工具
wheel (.whl)一种预编译的 Python 包格式,提升安装速度
poetry更现代的包管理工具,支持依赖解析、虚拟环境管理、打包发布
pipenv结合了 pip 和 virtualenv 的工具,自动管理虚拟环境和依赖
conda不仅是 Python 包管理器,还支持跨平台、跨语言的依赖管理(来自 Anaconda/Miniconda)

三、常见文件说明(用于包管理和环境配置)

文件名作用
requirements.txt列出项目所需依赖及版本,用于 pip install -r requirements.txt
Pipfile + Pipfile.lockpipenv 使用的依赖配置文件,锁定精确版本
pyproject.tomlpoetryflit 等现代工具使用的标准化配置文件
setup.py传统 Python 包构建脚本
environment.ymlconda 使用的环境定义文件,可指定 Python 版本和依赖

四、典型流程示例(以 venv + pip 为例)

# 1. 创建虚拟环境
python -m venv venv# 2. 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate# 3. 安装依赖
pip install numpy pandas flask# 4. 导出依赖
pip freeze > requirements.txt# 5. 使用 requirements.txt 安装依赖到其他环境
pip install -r requirements.txt# 6. 退出虚拟环境
deactivate

五、现代工具对比(poetry vs pipenv vs conda)

工具是否管理虚拟环境是否管理依赖版本是否支持打包发布是否支持多 Python 版本管理
venv + pip⚠️(需手动维护)
pipenv
poetry✅(lock file)
conda✅(environment.yml)✅(通过 pyenv 或内置方式)

选择建议

场景推荐工具
学习 Python,小项目venv + pip
Web 开发、普通应用pipenvpoetry
数据科学、机器学习conda(配合 pip
多 Python 版本切换pyenv + venvconda
发布自己的 Python 包poetrysetuptools
http://www.lryc.cn/news/2384928.html

相关文章:

  • Windows 使用 WSL 安装 Ubuntu
  • .jsx文件和.tsx文件有什么区别
  • 第九天的尝试
  • 每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)
  • 《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
  • pytorch LSTM 结构详解
  • 流程自动化引擎:重塑企业数字神经回路
  • nginx web服务日志分析
  • VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编
  • 5.23本日总结
  • 游戏引擎学习第298天:改进排序键 - 第1部分
  • Mysql篇-优化
  • Java 集合框架核心知识点全解析:从入门到高频面试题(含 JDK 源码剖析)
  • 一文详解生成式 AI:李宏毅《生成式 AI 导论》学习笔记
  • 什么是物联网 (IoT):2024 年物联网概述
  • 8级-数组
  • 大模型 Agent 就是文字艺术吗?
  • YOLOv8检测头代码详解(示例展示数据变换过程)
  • JUC并发编程1
  • 消息队列RabbitMQ与AMQP协议详解
  • Day 29 训练
  • STM32开发环境配置——VSCode+PlatformIO + CubeMX + FreeRTOS的集成环境配置
  • Profibus转Profinet网关赋能鼓式硫化机:智能化生产升级的关键突破
  • redis 缓存穿透,缓存雪崩,缓存击穿
  • JAVA8怎么使用9的List.of
  • 告别手动测试:AUTOSAR网络管理自动化测试实战
  • BUCK电路利用状态空间平均法和开关周期平均法推导
  • MongoDB 用户与权限管理完全指南
  • C++滑动门问题(附两种方法)
  • 基于ITcpServer/IHttpServer框架的HTTP服务器