依赖管理——Poetry vs Python venv

python环境配置之poetry&venv

1. venv

是python自带的模块, python3才有

1. 使用场景及使用逻辑

解决多个项目不可能共用一个全局依赖的问题

  1. 举例:
project1
依赖: req-v1.0
project2
依赖: req-v2.0
pip全局环境: req-v?

项目1和项目2依赖不同版本的同一包, 但是全局环境只能提供一个版本的包, 两个项目无法同时运行起来

  1. 解决方案——venv
project1
依赖: req-v1.0
project2
依赖: req-v2.0
project3
依赖: numpy
pip全局环境:
req-v1.0
numpy
venv1: req-v1.0
venv2: req-v2.0

venv是一个隔离的环境, 各venv和全局环境之间都是独立的, 互不干扰

2. 使用方法

  1. 进入项目文件夹

  2. 创建虚拟环境

    • Mac/Linux 创建名为myenv的虚拟环境 python3 -m venv myenv
    • Win 创建名为myenv的虚拟环境 python -m venv myenv
  3. 激活虚拟环境

    • Mac/Linux: source mien/bin/activate
    • Win:
      • CMD: myenv\Sctipts\activate.bat
      • Powershell: myenv\Sctipts\activate.ps1
  4. 在虚拟环境中安装需要的包, 和全局pip用法一样

  5. 退出虚拟环境

deactivate

2. poetry

大致等于pip+venv

相似工具: anaconda, npm, maven, go.mod, cargo

1. venv和pip的缺陷

1. pip的不足

第三方模块的依赖管理能力不足(第三方模块的依赖就是, 很多第三方包需要使用别的第三方包, 这就叫依赖, 因此安装时会把依赖的包也安装进来), 在安装包后依赖经常互相冲突, 删除包时也不能正确的处理依赖

2. venv的不足

2. poetry的功能

  • 管理第三方模块(和pip功能相似)
  • 管理虚拟环境
  • 管理虚拟环境的依赖(重要)
  • 打包与发布

3. poetry的使用

1. 安装

pip install poetry

2. 初始化poetry项目

poetry init

会有一连串的互动问题, 回答完后会生成项目的配置文件pyproject.toml

3. 创建虚拟环境

poetry env use xxx

如poetry env use python

4. poetry命令

使用逻辑:

选项:
  • -h, --help 显示给定命令的帮助信息。当未指定命令时,显示列表命令的帮助信息。
  • -q, --quiet 不输出任何消息。
  • -V, --version 显示此应用程序的版本。
    –ansi 强制启用 ANSI 输出。
    –no-ansi 禁用 ANSI 输出。
  • -n, --no-interaction 不要询问任何交互式问题。
    –no-plugins 禁用插件。
    –no-cache 禁用 Poetry 源缓存。
  • -C, --directory=DIRECTORY Poetry 命令的工作目录(默认为当前工作目录)。
  • -v|vv|vvv, --verbose 增加消息的详细程度:1 为正常输出,2 为更详细的输出,3 为调试输出。
可用命令:
  • about 显示有关 Poetry 的信息。

  • *add[添加依赖] 向 pyproject.toml 添加新的依赖项。

    • -D 仅添加到开发依赖中, 部署时不使用
    • 参数可以是包名, git url, 本地path
  • *build 默认情况下,构建一个包,作为 tarball 和 wheel。

  • check 检查 pyproject.toml 文件的有效性

  • *config 管理配置设置。

  • export 将锁定文件导出到其他格式。

  • help 显示命令的帮助信息。

  • *init 在当前目录中创建一个基本的 pyproject.toml 文件。

  • *install 安装项目的依赖项, 安装到本地。(已有pyproject.toml, 安装它)

  • list 列出命令。

  • *lock[锁定依赖] 锁定项目的依赖项。

  • *new[创建项目] 在 处创建一个新的 Python 项目。(会组织好文件夹)

  • publish 将包发布到远程存储库。

  • remove 从项目依赖项中删除包。

  • *run 在适当的环境中运行命令。

  • search 在远程存储库上搜索包。

  • *shell[虚拟环境] 在虚拟环境中生成一个 shell。

  • *show 显示有关包的信息。

  • update 根据 pyproject.toml 文件更新依赖项。

  • version 显示项目的版本或根据提供的有效版本规则增加版本号。

  • cache

    • cache clear 按名称清除 Poetry 缓存。
    • cache list 列出 Poetry 的缓存。
  • debug

    • debug info 显示调试信息。
    • debug resolve 调试依赖关系解析。
  • *env

    • env info 显示有关当前环境的信息。
    • env list 列出与当前项目关联的所有虚拟环境
    • env remove 删除与项目关联的虚拟环境。
    • *env use 激活或创建当前项目的新虚拟环境。
  • self

    • self add 向 Poetry 运行时环境添加其他包。
    • self install 安装此 Poetry 安装所需的已锁定包(包括附加组件)。
    • self lock 锁定 Poetry 安装的系统要求。
    • self remove 从 Poetry 运行时环境中删除其他包。
    • self show 显示 Poetry 运行时环境中的包信息。
    • self show plugins 显示当前安装的插件信息。
    • self update 更新 Poetry 到最新版本。
  • source

    • source add 为项目添加源配置。
    • source remove 删除项目配置的源。
    • source show 显示为项目配置的源信息。

poetry add / poetry install区别

poetry add library_name installs the library and adds it to the pyproject.toml file. Note - both installs the library and adds it to the file.

poetry install is used when you’ve directly edited the pyproject.toml file and added the dependency names manually. In that case, they aren’t installed yet, so, poetry install takes care of that.

namely, the add command adds packages to your pyproject.toml and installs them.The install command reads the pyproject.toml file from the current project, resolves the dependencies, and installs them.

5. 中间文件解释

pyproject.toml: 项目依赖, 打包发布声明(作者名字开源协议什么的)

poetry.lock: 确定项目的安装内容

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Ping32加密利器 vs ipguard,企业数据防护的实战对比

在数字化时代,企业数据的安全防护已成为不可忽视的重要议题。随着数据泄露事件的频发,企业迫切需要采用高效、可靠的数据防泄漏解决方案来保护其敏感信息。Ping32和IP-Guard作为市场上备受瞩目的两款数据保护工具,各自以其独特的功能和优势赢…

深入分析几个难以理解的Comparator源码

1.分析comparing单参数方法 网上很多帖子说实话,不咋地,讲的不细节,抄来抄去,就让我这个大二的垃圾,给大家梳理一下Comparator这几个难以理解public static方法吧。 1.1函数式接口Function 这个函数是使用的函数式编程…

OrCAD使用,快捷键,全选更改封装,导出PCB网表

1 模块名称 2 快捷键使用 H: 镜像水平 V:镜像垂直 R: 旋转 I: 放大 O: 放小 P:放置元器件 W: 步线 B: 总线(无电气属性) E: 总线连接符(和BUS一起用&#xff09…

图的应用(关键路径)

基于你设计的带权有向无环图,写出所有合法的关键路径,并算出关键路径总长度 文字描述:关键路径总长度的现实意义是什么? 1.关键路径 总长度454316 2.现实意义 从源点到汇点的所有路径中,具有最大路径长度的路径称…

如何选择OS--Linux不同Distribution的选用

写在前言: 刚写了Windows PC的不同editions的选用,趁热,把Linux不同的Distribution选用也介绍下,希望童鞋们可以了解-->理解-->深入了解-->深入理解--...以致于能掌握特定版本的Linux的使用甚者精通。……^.^…… so&a…

云手机的便捷性和安全性体现在哪?

随着5G技术的迅速发展,云手机在游戏、电商以及新媒体营销等领域中的应用日益广泛。它不仅能够显著降低成本、提升效率,还随着边缘计算和云技术的进步,展现出无限的增长潜力。 云手机的便捷性体现在哪里? 云手机的便捷性毋庸置疑。…

网关登录校验(2)----网关如何将用户信息传递给微服务

1.微服务获取用户信息 现在,网关已经可以完成登录校验并获取登录用户身份信息。但是当网关将请求转发到微服务时,微服务又该如何获取用户身份呢? 由于网关发送请求到微服务依然采用的是Http请求,因此我们可以将用户信息以请求头…

MySQL高阶1892-页面推荐2

目录 题目 准备数据 分析数据 总结 题目 您正在为一个社交媒体网站实施一个页面推荐系统。如果页面被user_id的 至少一个朋友喜欢 ,而 不被user_id喜欢 ,你的系统将 推荐 一个页面到user_id。 编写一个解决方案来查找针对每个用户的所有可能的 页面…

LTE和NR空口技术区别

LTE和NR空口技术区别

一起对话式学习-机器学习03——模型评估与模型选择

【一】前言 这一部分其实已在第二节中介绍到,这节起到回顾归纳的作用。 【二】训练误差与测试误差 首先,在分类问题中,有误差率和准确率两个概念,二者和为1。 误差率:分类错误的样本数占总数的比例。 其次&#xff0c…

【Node.js Vue】还在为选什么乐器发愁?乐器推荐系统帮你解决难题,基于用户行为分析的智能推荐,让你不再为音乐器材烦恼

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

用AI制作专属欧美漫画头像!FLUX大模型-漫画情侣lora应用教程

​ ​ 新上线了一个漫画风格的lora《漫画情侣(欧美黄金时代风)v1.0》 感兴趣的朋友可以去下载使用,下载是免费的。 下面跟大家说一下这个lora的特点、使用方法以及这个lora的延伸应用:欧美漫画头像制作 lora风格特点 欧美漫画/人…

【2024/09/20更新】植物大战僵尸杂交版V2.5下载

植物大战僵尸杂交版V2.5 2.5版本更新公告: 增加新关卡– 益智模式–两面夹击模式关卡 挑战模式关卡 增加新铲子–骷髅铲子 --银币购买-挖掉植物触发亡语或召唤骷髅僵尸 增加新植物– 4张白卡植物-通过两面夹击获得 2张金卡植物和4张星卡植物 游戏调整– 调整…

单片机——ADC采样

1、什么是ADC采样? ADC是指将模拟信号转换成数字信号的过程。通俗理解ADC采样就是采集电路中的电压,通过数值的方式表现出来。以STM32F103系列为例,它可以反应0~4095,换句话说,它采集的电压数值上表现为0~4095&#xf…

动态线程池(四)

动态线程池 dtp生命周期管理 生命周期相关类图 DtpExecutor EagerEtpExecutor OrderedDtpExecutor TaskWrapper任务包装器 MdcRunnable TaskWrappers NotifyEnum NoticeManager通知管理器 InvokerChain调用链

Unborn安装CUDA Toolkit 12.2

Unborn安装CUDA Toolkit 12.2 Unborn安装CUDA Toolkit前言下载安装配置验证 Unborn安装CUDA Toolkit 前言 今天在某台Unborn系统上安装某个依赖库时,提示环境中缺少CUDA_HOME环境变量,导致在安装某些依赖时出现问题。具体异常如下: Lookin…

什么是大数据?一文讲清大数据的概念、演进、趋势、产业链及关键技术!

前言 数字经济浪潮下,数据已成为当今最为核心的资源之一,数据成为推动企业和社会发展、转型、创新的新型生产要素。 大数据这个词,不管您是不是相关行业的从业者,也都听过无数遍了,但对于大多数人来说,并…

共享单车轨迹数据分析:以厦门市共享单车数据为例(五)

先来聊聊啥是共享单车电子围栏? 共享单车电子围栏是一种基于地理位置技术的虚拟边界,用于管理和规范共享单车的停放和使用。这种技术通过在地图上划定特定区域,帮助用户了解哪些地方可以停车,哪些地方不能停车,从而减…

博导团队指导、解读实验结果、SCI论文润色

表观组: DAP-seq:转录因子-DNA互作研究工具 ATAC-seq :染色质开放程度研究工具 H3K4me3 ChIP-seq:组蛋白甲基化修饰工具 BS-seq :DNA甲基化研究工具 H3K27ac ChIP-seq:组蛋白乙酰化修饰研究工具 Cut&Tag:转录因子研究工具 ChIP-seq:转录因子-DNA互作工具 互作组…

HarmonyOS学习(十三)——数据管理(二) 关系型数据库

文章目录 1、基本概念2、运行机制3、默认配置与限制4、接口说明5、实战:开发“账本”5.1、创建RdbStore5.2、创建数据库5.3、增加数据5.4、删除数据5.5、修改数据5.6、查询数据5.7、备份数据库5.8、恢复数据库5.9、删除数据库 官方文档地址: 通过关系型…