从零到一:快速上手 Poetry——Python 项目管理的利器

在 Python 项目开发中,包管理、依赖管理和虚拟环境的创建一直是开发者们经常面对的难题。传统上,开发者通常会使用 pipvirtualenv 或者 conda 来处理这些问题。然而,随着 Python 项目复杂度的增加,传统工具往往显得力不从心,这时 Poetry 应运而生,成为一个更加现代化、简洁和高效的工具。

本文将从零开始,带领你快速上手 Poetry,介绍如何使用 Poetry 来管理 Python 项目,包括安装、配置、依赖管理、虚拟环境和打包发布等。

什么是 Poetry?

Poetry 是一个 Python 项目的管理工具,它集成了依赖管理、虚拟环境管理、包打包、发布等功能。Poetry 旨在简化开发者的工作流程,让你能够轻松地管理项目的依赖,确保环境的一致性,并快速创建和发布 Python 包。

Poetry 的关键优势是:

  • 自动创建和管理虚拟环境。
  • 精确的依赖解析,避免版本冲突。
  • 使用 pyproject.toml 文件简化配置和管理。
  • 支持打包、发布、安装等一体化功能。

Poetry 的安装

首先,你需要在你的系统上安装 Poetry。你可以使用官方推荐的安装命令来进行安装:

1. 安装 Poetry

打开终端(命令行),并运行以下命令来安装 Poetry:

curl -sSL https://install.python-poetry.org | python3 -

或者,如果你是 Windows 用户,你可以使用以下 PowerShell 命令:

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicP) | python -

安装完成后,可以通过以下命令确认是否安装成功:

poetry --version

如果安装成功,会输出 Poetry 的版本号。

创建一个新项目

Poetry 提供了一个非常简洁的命令来初始化新的 Python 项目,它会自动创建必要的文件结构和配置。

2. 创建新项目

在终端中运行以下命令,创建一个新的 Python 项目:

poetry new my_project

这将会在当前目录下创建一个名为 my_project 的文件夹,并且自动生成一个基本的 Python 项目结构。你会看到如下文件和文件夹:

my_project/
├── my_project/
│   └── __init__.py
├── pyproject.toml
└── tests/└── __init__.py
  • pyproject.toml:这是 Poetry 项目的核心配置文件,所有关于项目的元数据(如依赖、版本等)都会写在这个文件里。
  • my_project/__init__.py:项目的 Python 源代码文件。
  • tests/:包含测试代码的文件夹,Poetry 默认为你创建了一个简单的测试文件夹。

3. 进入项目目录

cd my_project

管理项目依赖

Poetry 提供了强大的依赖管理功能,让你可以精确控制项目所需的包版本,并自动处理依赖的版本冲突。通过一些简单的命令,你可以轻松地安装、更新和管理项目依赖。

4. 初始化项目依赖

如果你已经有一个现有的项目,并且希望使用 Poetry 来管理其依赖,可以通过以下命令来初始化项目并创建 pyproject.toml 文件:

poetry init -n

-n 参数表示自动跳过交互式提示,直接创建文件。这将会生成一个 pyproject.toml 文件,并为你提供一个基础的依赖结构。

5. 添加依赖

当你需要向项目中添加一个新的依赖时,可以使用 poetry add 命令。举个例子,如果你想添加 requests 库,可以运行以下命令:

poetry add requests

这会将 requests 库添加到 pyproject.toml 中,同时 Poetry 会根据项目的需要自动解决依赖版本。

如果你需要添加特定版本的依赖,可以使用类似下面的命令:

poetry add requests@2.25.0

6. 安装所有依赖

如果你从其他地方克隆了一个项目,并且需要安装所有的依赖,可以使用 poetry install 命令。它会根据 pyproject.tomlpoetry.lock 文件安装所有的项目依赖:

poetry install

该命令会自动创建并激活虚拟环境,确保你在隔离的环境中安装依赖,从而避免全局包的冲突。

7. 安装开发依赖

有些依赖是只在开发时需要的,比如测试框架。Poetry 允许你使用 --dev 参数来安装开发依赖:

poetry add --dev pytest

此时,pytest 将只会在开发环境中安装,不会影响生产环境的依赖。

8. 使用其他 Python 版本

Poetry 允许你指定使用特定的 Python 版本。如果你已经安装了多个 Python 版本,可以通过 poetry env use 命令指定 Python 解释器的路径。例如:

poetry env use "path/to/your/python.exe"

这个命令会强制 Poetry 使用你指定的 Python 解释器来创建虚拟环境。

9. 使用 requirements.txt

如果你的项目原本使用了 requirements.txt 来管理依赖,并且你想迁移到 Poetry 上,可以使用以下命令来安装 requirements.txt 中的所有依赖:

poetry run pip install -r requirements.txt

这会在 Poetry 的虚拟环境中使用 pip 安装 requirements.txt 中列出的所有依赖项,并确保它们与项目的其他依赖兼容。

10. 更新依赖

随着项目的发展,依赖可能会有新的版本发布。你可以使用 poetry update 命令来更新所有依赖到最新的兼容版本:

poetry update

这将会根据你的 pyproject.toml 文件中的版本要求,更新所有已安装的依赖。

11. 查看项目的依赖

如果你想查看当前项目的所有依赖,可以使用:

poetry show

这将列出所有直接和间接的依赖项,并提供每个包的版本和其他详细信息。

12. 删除依赖

如果某个依赖不再需要,你可以使用 poetry remove 命令来删除它:

poetry remove requests

这会将 requestspyproject.toml 文件和 poetry.lock 文件中移除,并卸载它。


通过这些命令,Poetry 使得依赖管理变得更加高效和便捷。无论是添加、更新、安装开发依赖,还是使用指定的 Python 版本,Poetry 都提供了灵活的工具来帮助你管理项目的依赖和虚拟环境。

虚拟环境管理

Poetry 自动为每个项目创建和管理虚拟环境,这样就能确保你的项目始终在隔离的环境中运行,避免了全局安装包可能带来的冲突。

13. 查看虚拟环境

如果你想查看 Poetry 创建的虚拟环境,可以运行以下命令:

poetry env list

它会列出当前项目所使用的虚拟环境。你还可以通过 poetry env use 来切换 Python 版本。

14. 激活虚拟环境

你可以通过以下命令激活虚拟环境:

poetry shell

这会激活虚拟环境,并进入一个新的 shell,你可以在其中运行 Python 命令,测试代码等。

运行项目

Poetry 允许你直接在虚拟环境中运行命令,而不需要先手动激活虚拟环境。

15. 使用 Poetry 运行命令

如果你想直接运行 Python 脚本,可以使用以下命令:

poetry run python my_project/script.py

poetry run 会确保命令在 Poetry 管理的虚拟环境中运行。

打包和发布

当你的项目开发完成后,Poetry 还可以帮助你将项目打包并发布到 PyPI 或其他 Python 包管理平台。

16. 打包项目

首先,使用以下命令来构建项目的发行版:

poetry build

这将会生成 .tar.gz.whl 格式的包,存放在 dist/ 文件夹中。

17. 发布到 PyPI

如果你准备将项目发布到 PyPI,可以使用以下命令:

poetry publish --repositorypypi

当然,在发布前,你需要配置 PyPI 的认证信息,可以通过 poetry config 命令进行配置。

常用 Poetry 命令总结

命令功能
poetry new <project_name>创建一个新的 Python 项目
poetry add <package>添加依赖包到项目中
poetry install安装项目的所有依赖
poetry update更新项目依赖到最新版本
poetry shell启动项目虚拟环境的 shell
poetry run <command>在虚拟环境中运行指定命令
poetry build打包项目
poetry publish发布项目到 PyPI
poetry env list查看虚拟环境

总结

Poetry 是一个强大的 Python 项目管理工具,它整合了依赖管理、虚拟环境、包打包和发布等多项功能。通过简洁的命令行界面和易于理解的配置文件,它帮助开发者更高效地管理项目,并避免了版本冲突、依赖问题等常见困扰。

无论你是 Python 新手还是资深开发者,Poetry 都是一个值得尝试的工具。通过本文的介绍,你已经掌握了如何从零开始使用 Poetry 管理你的 Python 项目,管理依赖、虚拟环境、打包发布等都变得轻松起来。

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

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

相关文章

基于Windows11的RAGFlow安装方法简介

基于Windows11的RAGFlow安装方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是否成功&#…

基于Android平台的SOME/IP测试模块 EPT-ETS

在汽车产业智能化、网联化的时代浪潮中&#xff0c;汽车电子系统正经历着前所未有的变革。SOME/IP&#xff08;Scalable service-Oriented MiddlewarE over IP&#xff09;协议作为汽车电子通信领域的关键技术&#xff0c;其稳定性、可靠性与高效性对于整车性能的提升起着至关重…

初阶数据结构习题【7】(3顺序表和链表)—— 21. 合并两个有序链表

1. 题目描述 力扣在线OJ——21合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1…

ESP32 IDF的触摸按键例子

硬件资源 1.ESP32 开发板 2. LED灯&#xff08;-接到GND, 通过10K电阻接到PIN4) 3. 触摸按键&#xff08;接到PIN32,对应触摸通道9) 预期效果&#xff1a; 1. 点动模式&#xff1a;小于1s的触摸&#xff0c;LED交替亮灭 2. 长按模式&#xff1a;大于1s的触摸&#xff0c;…

《2025软件测试工程师面试》功能测试篇

什么是功能测试? 功能测试是通过验证产品功能是否满足用户需求的过程,主要关注软件的功能是否符合需求规格说明,包括软件的各种功能、特性、性能、安全性和易用性等。 功能测试的流程包括哪些步骤? 需求分析:明确软件需求,确定测试范围。测试计划:制定详细的测试计划,…

python官方文档阅读整理(一)

2.2 解释器的运行环境 2.2.1 源文件的字符编码 默认情况下&#xff0c;python源码文件的编码是UTF-8。 3.Python速览 Python注释以#开头&#xff0c;直到该物理行结束。注释可以在行开头&#xff0c;或空白符与代码之后&#xff0c;但不能在字符串里面。 3.1 Python用作计…

队列的顺序结构—循环队列的判断条件(rear + 1) % MAXSIZE分析

一、为什么需要牺牲一个空间&#xff1f; 循环队列通过 front 和 rear 指针的位置关系来判断队列的空和满。但如果不牺牲一个空间&#xff0c;会导致以下问题&#xff1a; 1. 队空和队满的冲突 队空条件&#xff1a;front rear。队满条件&#xff1a;如果允许队列完全填满&…

Baklib内容中台赋能企业智管

内容中台构建全场景智管 现代企业数字化运营中&#xff0c;全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构&#xff0c;企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例&#xff0c;其利用中台系统将分散在CRM、ERP及内部文档…

大模型学习--微调

模型微调是一种在已有预训练模型的基础上&#xff0c;通过使用特定任务的数据集进行进一步训练的技术。这种方法允许模型在保持其在大规模数据集上学到的通用知识的同时&#xff0c;适应特定任务的细微差别。使用微调模型&#xff0c;可以获得以下好处&#xff1a; 提高性能&a…

【C++】模板编程入门指南:零基础掌握泛型编程核心(初阶)

文章目录 一、泛型编程二、函数模板1. 函数模板的概念和格式2. 函数模板的原理3. 函数模板的实例化隐式实例化显式实例化 三、类模板 一、泛型编程 泛型编程就是编写与类型无关的通用代码&#xff0c;是代码复用的一种手段&#xff0c;模板是泛型编程的基础&#xff0c;可能不太…

IO学习day2

一、思维导图 IO标准函数 问&#xff1a; printf\fprintf\sprintf\snprintf之间的区别&#xff1f; 1. printf&#xff1a;格式串输出&#xff0c;会在当前终端打印输出结果 2. fprintf&#xff1a;文件的写入&#xff0c;可以写入不同的数据类型&#xff08;int&#xff0c…

python-leetcode 47.路径总和III

题目&#xff1a; 给定一个二叉树的根结点root,和一个整数targetSum,求该二叉树力节点值之和等于targetSum的路径数目。 路径不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节点&#xff09; 方法一…

加油站小程序实战教程06地图多站点显示

目录 引言功能设计与开发步骤第一步&#xff1a;初始化项目与地图第二步&#xff1a;动态切换城市地图第三步&#xff1a;标记加油站位置第四步&#xff1a;获取用户位置并计算最近加油站第五步&#xff1a;城市名称解析完整代码总结 引言 在上一篇《加油站小程序实战05&#…

【vue-echarts】——04.配置项---legend

文章目录 一、配置项-legend图例二、显示结果一、配置项-legend图例 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 代码如下 Demo4View.vue <template><div class="about">

如何在一台服务器上搭建 mongodb副本集1主2从节点

在一台服务器上搭建 MongoDB 副本集&#xff08;1 主节点 2 从节点&#xff09;可以通过运行多个 MongoDB 实例并使用不同端口和数据目录来实现。以下是详细步骤&#xff1a; 1. 准备工作 确保已安装 MongoDB。为每个实例创建独立的数据目录和日志文件。 2. 创建数据目录和…

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境&#xff08;xxx是mac的username&a…

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展&#xff0c;越来越多的开发者希望在本地环境中部署和调用 AI 模型&#xff0c;以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型&#xff0c;并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…

行为型模式 - 观察者模式 (Publish/Subscribe)

行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;在该模式中&#xff0c;发送者&#xff08;发布者&#xff09;不会直接将消息发送给特定的接收者&#xff08;订阅者&…

科技查新有不通过的情况吗?为什么?

1. 科技查新有不通过的情况吗&#xff1f;为什么&#xff1f; 有。科技查新“不通过”&#xff08;即查新报告显示技术缺乏新颖性或存在侵权风险&#xff09;的情况并不罕见&#xff0c;主要原因包括&#xff1a; &#xff08;1&#xff09;技术缺乏创新性 重复开发&#xff…

Docker安装Postgres_16数据库

PostgreSQL简介 PostgreSQL 是一个功能强大、开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;以其可靠性、功能丰富性和可扩展性而闻名。它支持复杂的查询、事务完整性、并发控制以及多种数据类型和扩展功能&#xff0c;适用于各种规模的应用程序; 适用传…