Python - poetry(1)包管理利器的入门介绍

简介: Python - poetry(1)包管理利器的入门介绍

Python 虚拟环境详解


https://www.cnblogs.com/poloyy/p/15266382.html

 

poetry 官方介绍


github:https://github.com/python-poetry/poetry

文档(要🪜):https://python-poetry.org/docs/

 

poetry 民间介绍


  • 用 poetry 来同时管理 Python 库和 Python 程序
  • poetry 可以管理 Python 依赖包、虚拟环境,同时可以用于 Python 工程打包和发布的一款第三方工具包
  • poetry 通过配置文件 pyproject.toml 来完成依赖管理、环境配置、基本信息配置等功能,相当于把 Python 项目中的 Pipfile、setup.py、setup.cfg、requirements.txt、MANIFEST.in 融合到一起
  • 通过 pyproject.toml 文件,不仅可以配置依赖包,还可以用于区分开发、测试、生产环境、配置源路径

 

poetry 的优势


  • 更强大的依赖处理功能
  • 易于打包和构建Python工程
  • 易于发布工具包
  • 结构化展示依赖关系

 

依赖处理

pipenv 在 安装包的时候如果找不到它对应版本的依赖包会直接报错

> pipenv install oslo.utils==1.4.0

Could not find a version that matches pbr!=0.7,!=2.1.0,<1.0,>=0.6,>=2.0.0

 


但是 poetry 有强大的依赖处理能力,并不会报错

> poetry add oslo.utils=1.4.0
  - Installing pytz (2018.3)
  - Installing netifaces (0.10.6)
  - Installing netaddr (0.7.19)
  - Installing oslo.i18n (2.1.0)
  - Installing iso8601 (0.1.12)
  - Installing six (1.11.0)
  - Installing babel (2.5.3)
  - Installing pbr (0.11.1)
  - Installing oslo.utils (1.4.0)


  • poetry 在遇到 pbr (>=0.6,!=0.7,<1.0) 这个限定条件时,它会尝试去安装最新的 pbr(0.11.1),同时会选择 oslo.i18n==3.20.0
  • 但是,这时候发现 oslo.i18n 的版本和 pbr 最新版本冲突
  • 如果在 pipenv 中则会报错(像上面一样)
  • 但是 poetry 会尝试找出解决方案,最后发现 oslo.i18n==2.1.0 是可以满足所有包的相互依赖关系的要求
  • 最终,成功安装依赖包

 

易于打包、构建 python 工程

  • 在工程开发过程中,项目迁移和工程化部署是无法绕开的问题
  • 如果需要把工程部署到生产环境服务器上,这时候就需要用到 Python 的打包和安装功能
  • 在以往,会写繁琐的 setup.py、setup.cfg
  • 而在poetry中,一行命令就可以解决
> poetry build
Building poetry (1.0.0)
- Building sdist
- Built poetry-1.0.0.tar.gz
- Building wheel
- Built poetry-1.0.0-py2.py3-none-any.whl


易于发布工具包

  • 如果想要把工程发布到 PyPI 仓库怎么办?
  • poetry 中,只需要简单配置一下 pyproject.toml,就可以实现一行命令发布工具包
> poetry publish
Publishing poetry (1.0.0) to PyPI
  - Uploading poetry-1.0.0.tar.gz 100%
  - Uploading poetry-1.0.0-py2.py3-none-any.whl 58%


结构化展示依赖关系

  1. Python 是一个对第三方工具包依赖很强的一种编程语言
  2. 一个项目中会用到很多个不同的依赖包,不同包的依赖关系可能会很复杂
  3. poetry 可以实现结构化(tree 的形式)展示每个包的依赖关系,让工程的依赖一目了然


> poetry show --tree
requests-toolbelt 0.8.0 A utility belt for advanced users...
└── requests <3.0.0,>=2.0.1
    ├── certifi >=2017.4.17
    ├── chardet >=3.0.2,<3.1.0
    ├── idna >=2.5,<2.7
    └── urllib3 <1.23,>=1.21.1
> poetry show --latest
pendulum 2.0.4   1.4.5 Python datetimes made easy.
django   1.11.11 2.0.3 A high-level Python Web framework ...
requests 2.18.4  2.18.4 Python HTTP for Humans.


安装


linux、mac 下安装

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -

 

window 下安装

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python -

 

使用官方 git repository 来安装

python install-poetry.py --git https://github.com/python-poetry/poetry.git@master

 

卸载


python get-poetry.py --uninstall

 

完全删除 poetry

python install-poetry.py --uninstall

POETRY_UNINSTALL=1 python install-poetry.py

 

更新到最新的稳定版本


poetry self update

 

更新到预发布版本

poetry self update --preview

 

通过 pipx 安装、更新、卸载


安装 pipx

pip install pipx

 

安装、更新、卸载

pipx install poetry


pipx upgrade poetry


pipx uninstall poetry

 

相关文章
|
8月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
959 7
|
9月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
598 1
|
10月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
345 0
|
10月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
674 0
|
8月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
1722 1
Python API接口实战指南:从入门到精通
|
12月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
608 80
|
8月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1454 1
|
9月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
472 5
|
9月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。

推荐镜像

更多