取代pip,Python依赖管理的终极武器:Poetry

大家好,使用python过程中,包管理是一个永恒的话题。从早期的setuptools到后来的pip,再到现在的Poetry,开发者们一直在寻找更高效、更稳定、更可依赖的包管理方案。今天,我们就来聊聊这个现代Python项目的管理神器——Poetry

什么是Poetry?

Poetry是一个Python依赖管理和打包工具,它简化了项目的创建、依赖管理和发布流程。它的核心理念是将所有的依赖关系和项目配置集中在一个文件中,使得项目管理变得更加清晰和易于维护。

image-20240524142648784

为什么选择Poetry?

  1. 统一管理:Poetry使用一个名为pyproject.toml的文件来管理项目的所有配置信息,包括依赖、脚本和元数据。
  2. 依赖解析:Poetry自动解析并锁定依赖版本,确保项目在任何环境下都能重复安装相同的依赖版本。
  3. 虚拟环境管理:Poetry可以自动创建和管理虚拟环境,使得项目的隔离性更强。
  4. 简单发布:Poetry提供了简单的命令来发布Python包到PyPI等仓库。

快速上手

安装Poetry

在终端中运行以下命令安装Poetry

pip install poetry

安装完成后,你可以使用以下命令来验证安装是否成功:

poetry --version

image-20240524141349784

创建新项目

使用Poetry创建一个新项目非常简单。你只需要运行:

poetry new my_project

这将创建一个名为my_project的目录,里面包含基础的项目结构:

image-20240524141644308

添加依赖

Poetry使用pyproject.toml文件来管理依赖。你可以使用以下命令添加依赖:

poetry add requests

这将自动将requests库添加到pyproject.toml文件中,并安装到项目的虚拟环境中。

image-20240524141827224

移除依赖

如果你不再需要某个依赖,可以使用以下命令将其移除:

poetry remove requests

运行脚本

Poetry可以在项目的虚拟环境中运行脚本。假设你有一个脚本main.py,你可以使用以下命令运行它:

poetry run python main.py

发布项目

发布Python包从未如此简单。你只需要运行以下命令:

poetry publish --build

这将构建你的项目并将其发布到PyPI(需要配置PyPI账户)。

案例代码

下面是一个使用Poetry管理依赖和打包的简单示例。

  1. 创建新项目:

    poetry new example_project
    cd example_project
    
  2. 添加依赖:

    poetry add requests
    
  3. 创建脚本example_project/main.py

    import requestsdef fetch_data(url):response = requests.get(url)return response.json()if __name__ == "__main__":data = fetch_data('https://api.github.com')print(data)
    
  4. 运行脚本:

    poetry run python main.py
    

    image-20240524142228864

  5. 发布项目:

    更新pyproject.toml文件,添加项目元数据,然后运行:

    poetry publish --build
    

Poetry通过简化依赖管理和打包流程,使得Python项目的管理变得更加高效和可靠。无论是创建新项目、添加依赖、运行脚本还是发布项目,Poetry都提供了一套简洁直观的命令,让开发者能够专注于编写代码,而不是被依赖管理所困扰。

如果你还没有尝试过Poetry,现在就开始吧,它将大大提升你的开发体验和效率。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【全开源】CMS内容管理系统源码(ThinkPHP+FastAdmin)

基于ThinkPHPFastAdmin的CMS内容管理系统,自定义内容模型、自定义单页、自定义表单、专题、统计报表、会员发布等 提供全部前后台无加密源代码和数据库私有化部署,UniAPP版本提供全部无加密UniAPP源码。 ​构建高效内容管理的基石 一、引言&#xff1a…

深入分析 Android Activity (六)

文章目录 深入分析 Android Activity (六)1. Activity 的权限管理1.1 在 Manifest 文件中声明权限1.2 运行时请求权限1.3 处理权限请求结果1.4 处理权限的最佳实践 2. Activity 的数据传递2.1 使用 Intent 传递数据2.2 使用 Bundle 传递复杂数据 3. Activity 的动画和过渡效果3…

Python 机器学习 基础 之 数据表示与特征工程 【分箱、离散化、线性模型与树 / 交互特征与多项式特征】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【分箱、离散化、线性模型与树 / 交互特征与多项式特征】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【分箱、离散化、线性模型与树 / 交互特征与多项式特征】的简单说明 一、简单介绍 二、分箱、离散化、线性…

使用 Ollama框架 下载和使用 Llama3 AI大模型的完整指南

🏡作者主页:点击! 🤖AI大模型部署与应用专栏:点击! ⏰️创作时间:2024年5月24日20点59分 🀄️文章质量:96分 目录 💥Ollama介绍 主要特点 主要优点 应…

【应用层】域名系统DNS

目录 1、互联网的域名结构 2、域名服务器 域名系统 DNS (Domain Name System) 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址,域名系统其实就是名字系统。 互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统&#xff0c…

Facebook的心灵之镜:探寻数字社交的灵魂深处

在当今数字化时代,社交媒体已经成为了人们生活的一部分,而Facebook作为其中的佼佼者,更是承载了数以亿计的用户情感和交流。然而,Facebook不仅仅是一个简单的社交平台,它更像是一面心灵之镜,反映着数字社交…

充电宝哪个牌子好用?充电宝品牌怎么选?充电宝最好的牌子排名

现在市面上的充电宝品牌琳琅满目,但并不是所有的充电宝都安全可靠。据央视的一个报道,市面上有35%充电宝质量是不过关的!充电宝买不对就非常容易出现爆炸的一个情况,所以大家对选充电宝不仅能保障设备的安全。那么,充电宝哪个牌子…

IP地址在广告行业中的重要地位

新时代,广告已经成为了企业推广产品的必要手段,而企业想要广告效果好,就要做到精准投放营销广告,将“花钱”的广告精准送到产品的受众用户面前,让收益大于花销,而归根究底就是广告转化率与回报率是否达到预…

Leetcode刷题笔记2:数组基础2

导语 leetcode刷题笔记记录,本篇博客记录数组基础1部分的题目,主要题目包括: 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 知识点 滑动窗口 所谓滑动窗口,就是不断的调节子序列的起始位…

【全开源】课程预约小程序系统源码(FastAdmin+UniApp)

基于FastAdminUniApp开发的专属课程预约小程序,程序适用于SPA瑜伽、普拉提舍宾、培训机构等场所,通过多角色身份进行管理,让你的瑜伽馆/培训机构更加操作便捷。Uniapp小程序端包含会员入口、老师入口、员工入口。 ​打造便捷教育预约新体验 …

流量控制的艺术:深入探索分布式限流策略与实践

前言 ​ 当资源成为瓶颈时,服务框架需要对消费者做限流,启动流控保护机制。流量控制有多种策略,比较常用的有:针对访问速率的静态流控、针对资源占用的动态流控、针对消费者并发连接数的连接控制和针对并行访问数的并发控制。 常…

HCIP的学习(22)

BGP优化 [r1-bgp]peer 12.0.0.2 default-route-advertise ---BGP下放缺省路由,无论本地的路由表中是否存在缺省路由,都会向对等体下发一条下一跳为本地的缺省路由,从而减少网络中路由数量,节省对等体的设备资源 BGP协议优先级 缺…

mysql中连接的原理

大家好。我们在日常开发中经常会遇到多表联查的场景。今天我来为大家讲一下我们在进行多表联查时,表与表之间连接的原理。 为了方便讲解,我们先创建两个表,并填充一些数据。 如图所示,我创建了t1、t2两张表,每张表中…

四大运营商大流量卡测评,手机卡,物联网卡,纯流量卡

买大流量卡,看4个方面 优惠时间。有的只是12个月,24个月有优惠【可以先用一年,然后注销】通用流量。而不是定向流量全国通话分钟数。而不是亲情通话分钟数销户方式。是否支持随时销户,异地销户,线上销户,额…

火箭升空AR虚拟三维仿真演示满足客户的多样化场景需求

在航空工业的协同研发领域,航空AR工业装配系统公司凭借前沿的AR增强现实技术,正引领一场革新。通过将虚拟信息无缝融入实际环境中,我们为工程师、设计师和技术专家提供了前所未有的共享和审查三维模型的能力,极大地提升了研发效率…

使用Prometheus组件node_exporter采集linux系统的指标数据(包括cpu/内存/磁盘/网络)

一、背景 Linux系统的基本指标包括cpu、内存、磁盘、网络等,其中网络可以细分为带宽进出口流量、连接数和tcp监控等。 本文使用Prometheus组件node_exporter采集,存储在promethues,展示在grafana面板。 二、安装node_exporter 1、下载至本…

【数学建模】碎纸片的拼接复原

2013高教社杯全国大学生数学建模竞赛B题 问题一模型一模型二条件设立思路 问题求解 问题一 已知 d i d_i di​为第 i i i张图片图片的像素矩阵 已知 d i d_i di​都是 n ∗ m n*m n∗m二维矩阵 假设有 N N N张图片 模型一 我们认为对应位置像素匹配为 d i [ j ] [ 1 ] d k…

C++:单例模型、强制类型转换

目录 特殊类的设计不能被拷贝的类实现一个类,只能在堆上实例化的对象实现一个类,只能在栈上实例化的对象不能被继承的类 单例模式饿汉模式懒汉模式饿汉模式与懒汉模式的对比饿汉优缺点懒汉优缺点懒汉模式简化版本(C11) 单例释放问…

索引失效的场景有哪些?

一.概念 索引失效是指在查询时,数据库引擎无法使用索引来加速查询,从而导致查询性能下降。常见的索引失效原因有以下几种: 索引列没有被包含在查询条件中。如果查询条件中没有包含索引列,那么数据库引擎无法使用索引来加速查询。…

域提权漏洞系列分析-Zerologon漏洞分析

2020年08⽉11⽇,Windows官⽅发布了 NetLogon 特权提升漏洞的⻛险通告,该漏洞编号为CVE-2020-1472,漏 洞等级:严重,漏洞评分:10分,该漏洞也称为“Zerologon”,2020年9⽉11⽇&#xff…