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

【python虚拟环境管理】【mac m3】使用poetry管理python项目

文章目录

  • 一. 为什么选择poetry
  • 二. poetry相关操作
    • 1. 创建并激活环境
    • 2. 依赖包管理
      • 2.1. 安装项目依赖
      • 1.2. 管理不同开发环境的依赖
      • 1.3. 依赖维护
      • 1.4. 项目相关

Poetry是Python中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。Poetry提供了一个锁定文件,以确保可重复安装,并可以构建用于分发的项目。

一. 为什么选择poetry

在项目规模扩大时,依赖关系管理变得更为复杂,此时为什么Poetry 这样的工具变得必要:

  1. 增加的依赖关系数量: 随着项目规模的增大,项目通常会引入更多的依赖关系。不同的依赖可能需要特定版本,而这可能导致依赖冲突。

  2. 环境难以重现: 当项目的依赖关系数量增加时,使用传统的依赖管理工具(如 pip 或 Conda)可能会导致环境难以重现。这意味着在不同的开发环境或部署环境中,依赖的版本和配置可能会有所不同,从而增加了出现问题的可能性。

  3. 维护困难: 仅仅依靠 pip 或 Conda 进行依赖管理,可能需要手动维护 requirements.txt 或 environment.yml 等文件。这种方式可能导致配置文件的冗长和复杂性,增加了维护项目一致性的难度。

  4. Poetry 的优势:

    • Poetry 提供了一个新的方法来管理 Python 项目的依赖关系和环境。它通过统一的 pyproject.toml 文件来管理项目的依赖,提供了更简洁、更清晰的方式定义项目的依赖关系和版本约束。
    • Poetry 还支持锁定依赖版本,确保在不同的环境中都可以重现相同的依赖关系,从而增强了项目的可重现性和一致性。
    • Poetry 还包括便捷的虚拟环境管理功能,可以帮助隔离项目环境,避免与系统或其他项目的依赖冲突。
    • 此外,Poetry 支持项目的打包和发布,使得分发 Python 应用程序变得更加简单和一致。

 

二. poetry相关操作

1. 创建并激活环境

  1. 创建新的 Poetry 项目
# my-project 虚拟环境名称
#这个命令会创建一个名为 `my-project` 的新目录,并在其中生成一个基本的 Poetry 项目结构。  
# 可以使用 --path 或 -p 选项来指定一个特定的目录。
poetry new my-project
  1. 项目初始化
# 如果是已有项目转为使用poetry作为依赖管理,可以进行初始化
poetry init
  1. 激活虚拟环境
# 在项目创建后,通过如下命令来激活环境
# 这个命令会安装 `pyproject.toml` 中定义的所有依赖项,并激活虚拟环境。poetry install
  1. 查看当前环境信息
poetry env info

 

2. 依赖包管理

2.1. 安装项目依赖

# 安装pyproject.toml文件中的全部依赖poetry install# 安装最新稳定版本的flask
poetry add numpy# 指定具体的版本
poetry add flask=2.22.0 

当然也可以使用pip来安装依赖,只要注意pip安装在此虚拟环境下。

 

1.2. 管理不同开发环境的依赖

通过添加配置参数–dev来区分不同环境下的依赖包。


# 指定为开发依赖,会写到pyproject.toml中的[tool.poetry.dev-dependencies]区域
poetry add pytest --dev # 只安装非development环境的依赖,一般部署时使用
poetry install --no-dev  

 

1.3. 依赖维护

# 更新所有锁定版本的依赖包
poetry update#更新指定依赖包
poetry update numpy# 卸载依赖包
poetry remove numpy

 

1.4. 项目相关

# 查看项目安装的依赖
poetry show# 查看可以更新的依赖
poetry show --outdated# 树形结构查看项目安装的依赖
poetry show -t

 

参考:
https://blog.csdn.net/qq_40851623/article/details/135769991

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 持续集成04--Jenkins结合Gitee创建项目
  • 今日安装了一下Eclipse,配置了SVN
  • WSL2 Centos7 Docker服务启动失败怎么办?
  • 单臂路由组网实验,单臂路由的定义、适用情况、作用
  • 科技云报道:将技术普惠进行到底,百度智能云云原生数据库GaiaDB来啦!
  • 【海外云手机】静态住宅IP集成解决方案
  • LeNet实验 四分类 与 四分类变为多个二分类
  • 【Python】TensorFlow介绍与实战
  • 55 、mysql的存储引擎、备份恢复以及日志备份、恢复
  • 【Vue3】响应式数据
  • RocketMQ~架构与工作流程了解
  • electron项目中实现视频下载保存到本地
  • 【深度学习】VGG-16原理及代码实现
  • 【深度学习】OCR中的Shrink操作详解
  • 【分布式事务】怎么解决分布式场景下数据一致性问题
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 百度地图API标注+时间轴组件
  • 订阅Forge Viewer所有的事件
  • 基于axios的vue插件,让http请求更简单
  • 技术发展面试
  • 技术胖1-4季视频复习— (看视频笔记)
  • 来,膜拜下android roadmap,强大的执行力
  • 面试总结JavaScript篇
  • 嵌入式文件系统
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 用jQuery怎么做到前后端分离
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #if等命令的学习
  • $.ajax()
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (3)(3.5) 遥测无线电区域条例
  • (备忘)Java Map 遍历
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)原生js案例之数码时钟计时
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (回溯) LeetCode 46. 全排列
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (一)80c52学习之旅-起始篇
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)大道至简,职场上做人做事做管理
  • .Mobi域名介绍
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 发展历程和版本迭代
  • .NET Framework .NET Core与 .NET 的区别
  • .net 中viewstate的原理和使用
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .Net环境下的缓存技术介绍
  • .net网站发布-允许更新此预编译站点
  • @Pointcut 使用
  • [22]. 括号生成