Poetry
1. Poetry是什么可以把Poetry理解为一个“项目管家”。传统Python项目里管理依赖第三方库、虚拟环境、打包和发布等事务通常需要组合使用多个工具如pip, virtualenv, setuptools, twine等并且手动维护多个配置文件如requirements.txt, setup.py, MANIFEST.in等。这个过程容易出错也比较繁琐。Poetry将这些工作统一起来用一个工具和一份核心配置文件pyproject.toml来管理。它通过一个叫pyproject.toml的文件来声明项目的所有元信息、依赖以及构建配置确保项目的依赖解析、安装、打包和发布过程是确定、一致且高效的。类似于一个家庭药箱之前你需要分别购买感冒药、创可贴、消毒水并自己记住用法和有效期现在Poetry提供了一个整理好的急救箱里面物品分门别类并有清晰的使用说明清单。2. 他能做什么Poetry主要解决以下几个核心问题依赖管理与解析这是Poetry最突出的能力。它能自动计算并锁定项目所有依赖包括间接依赖的精确版本解决版本冲突并生成一个“锁文件”poetry.lock。这确保了在任何地方、任何时候安装的依赖都是一模一样的避免了“在我机器上能运行”的问题。就像一个精确的食谱不仅列出了主料还锁定了所有调料品牌和批次保证每次做出的味道完全一致。虚拟环境管理Poetry可以自动创建和管理与项目关联的Python虚拟环境将项目依赖与系统Python或其他项目完全隔离。就像一个独立的厨房不会和其他项目的“食材”混在一起。打包与发布用简单的命令就能将项目打包成标准的发行版源码包或wheel包并轻松发布到PyPIPython官方的软件仓库或私有的仓库。以前需要写复杂的setup.py和MANIFEST.in文件现在大部分配置在pyproject.toml里声明即可。项目结构标准化它鼓励并帮助创建符合现代Python项目标准的结构。3. 怎么使用一个典型的工作流如下安装Poetry通常推荐使用官方提供的安装脚本进行独立安装不污染项目环境。bashcurl -sSL https://install.python-poetry.org | python3 -创建新项目bashpoetry new my-project cd my-project这会创建一个包含标准目录结构如my_project源码目录和tests测试目录和初始pyproject.toml文件的项目。初始化现有项目bashcd existing-project poetry init通过交互式问答生成pyproject.toml文件。添加依赖bashpoetry add requests poetry add pytest --dev # 添加开发依赖add命令会自动更新pyproject.toml并安装依赖如果需要会先创建虚拟环境。安装所有依赖bashpoetry install这条命令会读取pyproject.toml和poetry.lock如果存在安装所有项目依赖和开发依赖到虚拟环境中。如果是第一次安装且没有锁文件它会解析依赖并生成poetry.lock。在项目环境中运行命令bashpoetry run python your_script.py poetry run pytest打包与发布bashpoetry build # 生成dist/目录下的包 poetry publish # 发布到PyPI需要提前配置token4. 最佳实践将poetry.lock文件纳入版本控制这是保证团队协作和环境一致性的关键。对于应用程序非库务必提交锁文件。对于要发布的库通常只提交pyproject.toml不提交lock文件以便让库的使用者能灵活解析依赖。使用明确的依赖版本声明在pyproject.toml中可以使用Caret^或Tilde~等符号来指定兼容的版本范围如^2.0.0表示兼容2.x的最新版让Poetry在更新时有合理的灵活性同时又通过lock文件锁定具体版本。区分生产依赖与开发依赖使用--dev标记或在新版Poetry中用--group dev来添加仅用于开发、测试的包如pytest, black, mypy等使生产环境更干净。保持pyproject.toml整洁有序手动编辑该文件时将依赖分类如[tool.poetry.dependencies],[tool.poetry.group.dev.dependencies]整理清楚便于阅读和维护。优先使用poetry add命令添加依赖时尽量使用poetry add而非手动编辑pyproject.toml因为该命令会自动处理版本解析和安装。5. 和同类技术对比pipvirtualenv/venvrequirements.txt这是最传统、最底层的方式。pip是包安装器但依赖解析能力较弱。requirements.txt需要手动维护且通常只记录直接依赖的版本难以保证复杂依赖树的一致性。整个过程更手动化工具链分散。对比Poetry提供了一个集成化的、更高层的解决方案自动处理了依赖解析、锁版本和虚拟环境管理体验更流畅、结果更确定。pipenvpipenv的目标与Poetry非常相似也是致力于统一依赖管理和虚拟环境并生成Pipfile.lock锁文件。它曾获得Python官方推荐。对比Poetry在依赖解析算法上通常被认为更快、更现代。此外Poetry将打包和发布功能也集成在内而pipenv主要聚焦于依赖安装和环境管理。近年来Poetry的社区活跃度和采纳率似乎更高。condaconda是一个跨语言的包和环境管理器起源于科学计算领域。它不仅可以管理Python包还能管理非Python的二进制库如MKL, CUDA。对比Poetry是纯Python生态的工具更轻量与PyPI集成更紧密。如果项目严重依赖科学计算栈或需要严格管理二进制依赖conda可能是更好的选择。对于大多数通用的Python应用和库开发Poetry更简洁直接。总结来说Poetry适合追求开发体验一致性、希望简化项目配置和发布流程的Python开发者。对于新项目它是非常值得推荐的起点工具。对于已有复杂历史配置的旧项目迁移可能需要一些评估和调整。

相关新闻

SQLAlchemy 详解

SQLAlchemy 详解

1. 它是什么SQLAlchemy 是一个用于 Python 语言的数据库工具包。它的核心是一个对象关系映射(ORM)系统,可以理解为一个“翻译官”或“中间人”。想象一下,你的 Python 程序讲的是“对象”的语言(比如,一个 …

2026/5/17 3:13:10 阅读更多 →
【石墨烯】石墨烯载流子密度模型(三维半导体载流子模型拟合到石墨烯模型上)【含Matlab源码 15070期】

【石墨烯】石墨烯载流子密度模型(三维半导体载流子模型拟合到石墨烯模型上)【含Matlab源码 15070期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…

2026/5/17 3:13:09 阅读更多 →
小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

一、本文介绍 本文围绕目标检测模型 YOLO多模态 的训练过程与性能评估,重点通过多种曲线图可视化对比方法,系统呈现模型在训练阶段的关键指标变化趋势,深入分析其检测精度与损失优化表现。 本文目录 一、本文介绍 检测精度曲线图 损失函数变化曲线图 二、YOLO多模态 绘…

2026/5/17 3:13:08 阅读更多 →

最新新闻

杭州创始人IP打造运营如何进行?

杭州创始人IP打造运营如何进行?

在杭州进行创始人IP打造运营,需要遵循一个系统化的方法来确保成功。以下是围绕商业IP打造的几个关键步骤,以及如何结合杭州良策文化传媒有限公司(以下简称“良策文化”)的专业服务来进行:1. 明确目标与定位核心结论&am…

2026/7/4 19:45:35 阅读更多 →
JVM是什么?

JVM是什么?

JVM是什么?JVM,即Java Virtual Machine,即Java虚拟机。虚拟机是什么?模拟出一台和真实物理电脑行为几乎一样的虚拟电脑的软件。(JVM是进程虚拟机,不模拟硬件,只模拟一套自定义虚拟指令集&#x…

2026/7/4 19:43:35 阅读更多 →
Deepin Boot Maker终极指南:3步制作Linux启动盘的最佳实践

Deepin Boot Maker终极指南:3步制作Linux启动盘的最佳实践

Deepin Boot Maker终极指南:3步制作Linux启动盘的最佳实践 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 你是否曾为安装Linux系统而烦恼?传统命令行制作启动盘的方式复杂且容易出错&…

2026/7/4 19:43:35 阅读更多 →
Transformers.js:重新定义浏览器端AI开发的颠覆性框架

Transformers.js:重新定义浏览器端AI开发的颠覆性框架

Transformers.js:重新定义浏览器端AI开发的颠覆性框架 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https://gitcode.com…

2026/7/4 19:41:34 阅读更多 →
Codex 用户集体暴怒!Token疯狂蒸发的 5 个原因终于找到了

Codex 用户集体暴怒!Token疯狂蒸发的 5 个原因终于找到了

最近不少朋友都有一个感受,就是codex怎么消耗变快了。之前是100刀的Pro会员随便用,根本用不完(额度那个时候有翻倍)。后续发现100刀的Pro开始不够用了,甚至到最后200刀的刀Pro也开始不够用了。就在2026 年 6 月底&…

2026/7/4 19:41:34 阅读更多 →
Python简史

Python简史

Python是我喜欢的语言,简洁,优美,容易使用。前两天,我很激昂的向朋友宣传Python的好处。 听过之后,朋友问我:好吧,我承认Python不错,但它为什么叫Python呢? 我不是很确…

2026/7/4 19:39:34 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻