当前位置: 首页 > news >正文

Python Poetry使用教程

1. Poetry 简介

Poetry 是一个现代化的 Python 依赖管理打包工具,它解决了传统 pip + requirements.txt 方式的诸多痛点:

  • 自动依赖解析(避免版本冲突)
  • 虚拟环境管理(无需手动 virtualenv
  • 项目打包与发布(一键发布到 PyPI)
  • 统一配置文件pyproject.toml 替代 setup.py + requirements.txt

本教程将带你从 安装配置高级用法,全面掌握 Poetry 的使用。


2. 安装与配置

(1) 安装 Poetry

# Linux/macOS
curl -sSL https://install.python-poetry.org | python3 -# Windows (PowerShell)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

安装完成后,检查版本:

poetry --version

(2) 基本配置

# 让虚拟环境创建在项目目录内(推荐)
poetry config virtualenvs.in-project true# 启用并行安装(加速依赖安装)
poetry config installer.parallel true# 查看所有配置
poetry config --list

关键配置项

  • virtualenvs.path:虚拟环境存储路径(默认在系统缓存目录)
  • installer.parallel:是否启用并行安装
  • virtualenvs.in-project:是否在项目目录创建 .venv

3. 项目管理

(1) 创建新项目

# 创建标准项目结构
poetry new my-project# 进入项目
cd my-project

生成的项目结构:

my-project/
├── pyproject.toml  # 项目配置文件
├── README.md
├── my_project/     # 源码目录
│   └── __init__.py
└── tests/          # 测试目录└── __init__.py

(2) 在现有目录初始化

poetry init

交互式输入:

  • 项目名称、版本、描述
  • Python 兼容版本
  • 依赖项(可稍后添加)

4. 依赖管理

(1) 添加依赖

# 添加生产依赖
poetry add requests# 添加开发依赖(如 pytest)
poetry add --group dev pytest# 指定版本范围
poetry add "django>=4.0,<5.0"# 添加可选依赖(如 redis)
poetry add --optional redis

(2) 安装依赖

# 安装所有依赖(含开发依赖)
poetry install# 仅安装生产依赖
poetry install --no-dev

(3) 更新与移除依赖

# 更新所有依赖
poetry update# 更新指定包
poetry update requests# 移除依赖
poetry remove requests

(4) 查看依赖

# 查看已安装的包
poetry show# 树形结构显示依赖关系
poetry show --tree# 检查过时的包
poetry show --outdated

5. 虚拟环境管理

(1) 创建与使用

# 使用指定 Python 版本创建虚拟环境
poetry env use python3.9# 进入虚拟环境 Shell
poetry shell# 在虚拟环境中运行命令(不进入 Shell)
poetry run python app.py

(2) 管理虚拟环境

# 列出所有虚拟环境
poetry env list# 显示当前环境信息
poetry env info# 删除虚拟环境
poetry env remove python3.9

6. 构建与发布

(1) 构建项目

# 生成 dist/ 下的安装包
poetry build# 只构建 wheel 包
poetry build --format wheel

(2) 发布到 PyPI

# 配置 PyPI Token
poetry config pypi-token.pypi your-token# 发布到 PyPI
poetry publish# 发布到测试 PyPI
poetry publish --repository testpypi

(3) 版本管理

# 查看当前版本
poetry version# 升级版本号
poetry version patch  # 0.1.0 → 0.1.1
poetry version minor  # 0.1.1 → 0.2.0
poetry version major  # 0.2.1 → 1.0.0

7. 高级功能

(1) 多包源管理

# 添加私有源
poetry source add private-repo https://private.pypi.org/simple# 查看已配置的源
poetry source show# 移除源
poetry source remove private-repo

(2) 导出 requirements.txt

# 导出生产依赖
poetry export --without-hashes --output requirements.txt# 导出开发依赖
poetry export --dev --output requirements-dev.txt

(3) 插件管理

# 安装插件(如 poetry-plugin)
poetry self add poetry-plugin# 查看已安装插件
poetry self show plugins# 更新 Poetry 自身
poetry self update

8. 常见问题

(1) 依赖解析失败

# 强制更新 lock 文件
poetry lock --no-update# 调试依赖冲突
poetry debug resolve

(2) 清理缓存

# 查看缓存列表
poetry cache list# 清理所有缓存
poetry cache clear --all

(3) 虚拟环境问题

# 删除并重建虚拟环境
poetry env remove python3.9
poetry install

9. 最佳实践(补充)


10. 总结

Poetry 是 Python 项目管理的终极工具,它能:
自动处理依赖冲突
统一管理虚拟环境
简化打包与发布流程
替代 setup.py + requirements.txt

建议所有 Python 开发者迁移到 Poetry,享受更高效的开发体验! 🚀

http://www.xdnf.cn/news/476515.html

相关文章:

  • llamafactory SFT 从断点恢复训练
  • 论文阅读:Self-Collaboration Code Generation via ChatGPT
  • uniapp-商城-58-后台 新增商品(属性子级的添加和更新)
  • Axure设计的“广东省网络信息化大数据平台”数据可视化大屏
  • 基于大模型预测的脑出血全流程诊疗技术方案
  • IDEA:程序编译报错:java: Compilation failed: internal java compiler error
  • Java 使用 PDFBox 提取 PDF 文本并统计关键词出现次数(附Demo)
  • uniapp-商城-59-后台 新增商品(属性的选中,进行过滤展示,filter,some,every和map)
  • 深入解析VPN技术原理:安全网络的护航者
  • 金融问答系统:如何用大语言模型打造高精度合规的金融知识引擎
  • math toolkit for real-time development读书笔记一-三角函数快速计算(1)
  • Oracle 批量操作脚本解析:动态执行与分批次删除
  • STM32就业前景和下载KEIL软件(保姆级)
  • MongoDB分片集群
  • 自定义快捷键软件:AutoHotkey 高效的快捷键执行脚本软件
  • Deeper and Wider Siamese Networks for Real-Time Visual Tracking
  • 香港 GPU 服务器优势及使用场景解析
  • 灌区量测水自动化监测解决方案
  • Git基础使用方法与命令总结
  • MySQL的缓存策略
  • C# 面向对象 构造函数带参无参细节解析
  • 巧记英语四级单词 Unit8-上【晓艳老师版】
  • Android minSdk从21升级24后SO库异常
  • 【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块
  • Springboot 异步场景 使用注解 @Async 及 自定义线程池分模块使用
  • 一分钟了解机器学习
  • 专业版降重指南:如何用Python批量替换同义词?自动化操作不香嘛?
  • STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
  • 宇宙中是否存在量子现象?
  • Jenkins的流水线执行shell脚本执行jar命令后项目未启动未输出日志问题处理