Python Poetry 依赖管理工具介绍

news/2025/3/20 6:22:59/文章来源:https://www.cnblogs.com/julian-zhang/p/18782254

Python Poetry 是一个现代化的 Python 依赖管理和打包工具,旨在简化 Python 项目的依赖管理、虚拟环境管理和包发布流程。它的核心目标是取代传统的 pip + virtualenv + requirements.txt 工作流,提供更高效、一致和可靠的项目管理方式。


Poetry 的核心功能

1. 依赖管理

  • 自动解决依赖冲突:Poetry 使用高级依赖解析算法,确保安装的包版本兼容。
  • 区分生产环境和开发环境:可以定义项目依赖(生产环境)和开发工具依赖(如测试框架、代码检查工具等)。
  • 锁定依赖版本:通过生成 poetry.lock 文件,确保不同环境下依赖版本的一致性(类似 pipenvPipfile.lock)。

2. 虚拟环境管理

  • 自动创建和管理项目的虚拟环境,无需手动操作 virtualenvvenv
  • 支持隔离不同项目的依赖,避免全局安装的混乱。

3. 项目打包与发布

  • 通过简单命令即可将项目打包为标准的 Python 包(wheelsdist)。
  • 支持一键发布到 PyPI 或其他私有仓库。

4. 配置文件统一化

  • 使用 pyproject.toml 文件替代传统的 setup.pyrequirements.txtMANIFEST.in 等多配置文件。
  • 统一管理项目元数据、依赖、构建配置等。

Poetry 的优势

  1. 简化工作流:一条命令完成依赖安装、环境管理和打包。
  2. 依赖锁定:确保开发、测试和生产环境的一致性。
  3. 兼容 PEP 标准:遵循 PEP 517 和 PEP 621,与 Python 生态系统无缝集成。
  4. 跨平台支持:Windows、macOS、Linux 均可使用。

基本用法示例

  1. 初始化项目

    poetry new my-project    # 创建新项目
    cd my-project
    

    或对已有项目:

    poetry init             # 生成 pyproject.toml
    
  2. 添加依赖

    poetry add requests     # 添加生产依赖
    poetry add pytest --dev # 添加开发依赖
    
  3. 安装依赖

    poetry install          # 安装所有依赖(含开发依赖)
    poetry install --no-dev # 仅安装生产依赖
    
  4. 运行脚本

    poetry run python my_script.py
    
  5. 打包与发布

    poetry build            # 生成 dist/ 下的包文件
    poetry publish          # 发布到 PyPI
    

适用场景

  • 新项目的依赖管理和打包。
  • 替代传统的 pip + virtualenv 工作流。
  • 需要精确控制依赖版本(如团队协作或部署)。
  • 需要快速发布 Python 包到 PyPI。

总结

Poetry 是 Python 开发中的“一站式”工具,解决了依赖管理、环境隔离和打包发布的痛点。如果你经常因依赖冲突或环境不一致而头疼,或者希望简化项目配置流程,Poetry 是一个值得尝试的工具。

官方文档:https://python-poetry.org/

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

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

相关文章

推荐几本专著1《AI芯片开发核心技术详解》、2《智能汽车传感器:原理设计应用》、3《TVM编译器原理与实践》、4《LLVM编译器原理与实践》

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

《自然语言处理实战 : 从入门到项目实践》 | PDF免费下载

《自然语言处理实战:从入门到项目实践》系统讲解 NLP 基础知识与核心技术,涵盖文本分类、情感分析、机器翻译等内容,并通过实际项目演示如何应用深度学习模型解决 NLP 问题。适合 AI 初学者、开发者及数据科学家,助力高效掌握 NLP 技能。《自然语言处理实战 : 从入门到项目…

数组与指针的区别

一、理解数组类型 指针存储的是内存的地址,而内存的地址实际上是一个64位无符号的整数。我们可以发现指针实际上是内存上的一处空间的值保存着另一处空间的地址。1、算数方法获取相邻内存的值 首先定义 x 和 y 两个变量,然后分别输出他们的地址。 int x = 1; int y = 123; co…

《自然语言处理实战 : 预训练模型应用及其产品化》 | PDF免费下载

《自然语言处理实战:预训练模型应用及其产品化》系统讲解了 NLP 领域的最新技术,涵盖 BERT、GPT 等预训练模型的应用,并结合实际案例展示如何将 NLP 技术产品化。适合开发者、数据科学家及 AI 从业者,助力高效落地 NLP 解决方案。点击下载 书籍信息 作者: Ankur A. Patel /…

[以太网/汽车网络] 车载服务通信(SOME/IP)设计实践 [转]

序 1 引入在SOA架构中,服务是构成系统的基本单元,它代表了系统中的某个功能或操作。服务通过明确的接口与外界进行交互,实现了功能的封装和重用。 SOA架构的核心就是服务: 它通过将应用程序划分为一系列的服务来降低系统的复杂度,提高系统的灵活性和可维护性。 在SOA中,服…

小白尖叫!DeepSeek安装竟偷占C盘?这样做路径配置 直接根治存储焦虑!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注前言 之前给大家讲解了关于Ollama+DeepSeek的使用和本地部署, 有些朋友表示遇到一些问题,无法解决! …

智能工厂搭建:系统数量与选型的深度剖析

当今制造业加速迈向智能化的时代,智能工厂成为众多企业追求的目标。它宛如一座现代化的智慧堡垒,融合了先进技术与高效管理流程,能大幅提升生产效率、优化产品质量。然而,构建智能工厂并非一蹴而就,其中一个关键且容易让人困惑的问题便是:究竟要引入多少系统?搞懂这一点…

20款好用的SSH客户端工具,你在用哪个?

20款好用的SSH客户端工具,你在用哪个? 有些小伙伴购买了Linux服务器之后,不知道该用什么工具来实现本地连接,而不是每次打开服务器厂家所提供的 web 命令页面来操作。操作步骤:登录账号 - 找到服务器 - 打开web命令页面SSH工具:打开软件 - 配置连接通过SSH工具大大减少了…

Spring AOP 的实现原理

一、AOP的基本概念 将横切关注点(日志、事务、权限)从业务逻辑中分离出来,提高代码的可维护性。 下面将解释,AOP专属名词,切面、连接点、切点、通知、目标对象、代理对象:切面:切面是封装横切关注点的模块,比如日志记录。 @Aspect 修饰类,如 LoggingAspect 连接点:连…

drm study

学习过程 0319:对于任何驱动来说,buffer是最重要的,知道了buffer的创建使用这个驱动就会一半了;现在感觉是一个无头苍蝇,感觉非常复杂:数据结构非常多,之间的关系也非常复杂;不过没关系,先研究buffer通路;可以看见应用层对mmap写入的hello world,驱动中vkms_obj->…

pcie 简介及引脚定义

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带宽。 PCI总线使用并行总线结构,在同一条总线上的所有…

C++ 基础(1)

0x01 第一个C++程序 #include <iostream>int main() {std::cout << "Hello World!\n"; } // std::cout 向控制台输出内容的指令 // << 输出的运算符 // "" 字符串内容的边界符 // \n 输出换行 // Hello World 输出字符…