首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >poetry:简化Python依赖管理和打包

poetry:简化Python依赖管理和打包

作者头像
一只大鸽子
发布2024-03-04 11:15:15
发布2024-03-04 11:15:15
2.1K0
举报

poetry是一个Python依赖管理和打包工具。主要用途包括:

  • • 依赖管理:虚拟环境/依赖版本
  • 打包库(发布到PyPI中)

poetry官网

官网:https://python-poetry.org/

当然你可能要问:不是已经有condapip了吗,为什么还要再搞个poetry出来? 如果你进poetry的官网查看介绍,你会发现poetry像是一个加强版的pipvenvpoetry不是conda这样的大而全的虚拟环境管理,不能像conda那样安装不同版的Python(甚至其它语言的程序)。 poetry专注于解决项目的依赖问题,确保他人能轻松复现你的Python项目(而不掉进依赖地狱)。

另外stackoverflow上有一个讨论:能否将conda和poetry结合起来,conda负责创建不同版本的python(及其它依赖,如cuda),poetry只负责管理python包。https://stackoverflow.com/questions/70851048/does-it-make-sense-to-use-conda-poetry https://medium.com/@silvinohenriqueteixeiramalta/conda-and-poetry-a-harmonious-fusion-8116895b6380

安装

推荐使用pipx安装: pipx install poetry

也可以使用poetry提供的安装器安装:https://python-poetry.org/docs/#installing-with-the-official-installer

基本使用 常用命令: poetry new <project_name>:创建新项目 poetry init:初始化现有项目

poetry add <package>添加安装poetry install:安装pyproject.toml中的依赖

poetry shell:激活虚拟环境 exit:退出虚拟环境和新shell deactivate:退出虚拟环境且不离开shell

1 设置项目

1.a 新建项目

如果你正在开始一个新的项目,可以用poetry new <project_name>创建项目:

代码语言:javascript
复制
poetry new poetry-demo

poetry会生成一些文件。 重点:pyproject.toml定义了项目及其依赖项

代码语言:javascript
复制
[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["xx <xx@163.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

可以看到pyproject.toml分为几个部分:

  • [tool.poetry]:项目的名称、版本、描述、作者等信息
  • [tool.poetry.dependencies]:项目的Pyhton版本、依赖
  • [build-system]:先不管

1.b (可选)已有项目

通过poetry init初始化已有项目。运行命令后,poetry会用交互方式让你填写项目信息,然后生成pyproject.toml

代码语言:javascript
复制
cd pre-existing-project
poetry init
...

2 使用虚拟环境

如果你使用其他工具(如conda)管理虚拟环境,则不需要使用 poetry shell ,因为您可能已经激活了该虚拟环境并提供了正确的 python 实例。

推荐使用下面的命令,设置虚拟环境目录为当前项目所在位置: poetry config virtualenvs.in-project true

激活/退出 虚拟环境

使用 poetry shell可以创建一个(激活了虚拟环境的)嵌套的shell。

  • • 退出虚拟环境和新shell,输入exit
  • • 退出虚拟环境且不离开shell,输入deactivate

3.指定依赖项

3.a 在pyproject.toml中可以手动设置依赖项

代码语言:javascript
复制
[tool.poetry.dependencies]
pendulum = "^2.1"

pendulum = "^2.1" 表示pendulum包的版本 >=2.1.0 <3.0.0

3.b(可选) 使用poetry add 命令添加依赖项

它会自动找到合适的版本并安装包和子依赖项。 poetry add pendulum

有时候找不到合适的版本,可以指定版本。比如在python3.8的条件下安装numpy会安装失败,提示numpy最低支持的python版本是3.9。通过poetry add numpy==1.24.1指定numpy版本可以安装成功。

4 安装依赖

(当别人拿到你的项目后,就可以轻松安装依赖了) 在pyproject.toml所在目录下,执行poetry install会安装pyproject.homl中的依赖项。

小结

poetry最大的亮点是解决了Python包依赖问题。此外还提供了虚拟环境和打包、发布等功能。限于篇幅原因,本文没有介绍poetry的打包和发布功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 安装
  • 1 设置项目
    • 1.a 新建项目
    • 1.b (可选)已有项目
  • 2 使用虚拟环境
    • 激活/退出 虚拟环境
  • 3.指定依赖项
    • 3.a 在pyproject.toml中可以手动设置依赖项
    • 3.b(可选) 使用poetry add 命令添加依赖项
  • 4 安装依赖
  • 小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档