『Python学习笔记』Python环境管理器—Poetry入门指南

Python环境管理器—Poetry入门指南

在这里插入图片描述

一. 基础知识

1. Poetry是什么?

  • Poetry 帮助你定义、管理和安装 Python 项目的依赖,还可以用于项目的打包和发布。
  • 简单来说,Poetry 类似pip,能协助你进行套件管理(dependency management),但又比pip 强大得多,因为它还包含了pip 所未有的下列功能:
  • 管理第三方模块的安装与卸载
  • 管理虚拟环境
  • 管理虚拟环境的依赖
  • 管理打包与发布。其中最重要的是 虚拟环境的依赖。

2. 名词解释:虚拟环境管理、模块管理、模块依赖管理

在这里插入图片描述

3. pip的不足

  • pip 是Python 内建的套件管理工具,而它的最大罩门,就是对于「套件间的相依性管理」能力不足。尤其是在「移除」套件时的依赖解析——可以说没有。这也是我提议改用Poetry 的根本原因。
  • 怎么说?看完下面的例子就能明白。
  • pip uninstall的困境:以Flask 为例
  • 假设现在你的工作专案中有开发API 的需求,经过一番研究与讨论,决定使用Flask网页框架来进行开发。
  • 我们知道,很多套件都有依赖的套件,也就是使用「别人已经造好的轮子」来构成套件功能的一部分。
  • 安装主套件时,这些依赖套件也必须一并安装,主套件才能正常运作,这里的Flask 就是如此。安装Flask 时,不会只安装单一个flask套件,还会安装所有Flask 的必要构成部分——也就是依赖套件,结果如下:
❯ pip install flask 
Collecting flask 
  Downloading Flask-2.1.1-py3-none-any.whl (95 kB) 
     |█████████████████████████ ███████| 95 kB 993 kB/s 
... 
Installing collected packages: zipp, MarkupSafe, Werkzeug, Jinja2, itsdangerous, importlib-metadata, click, flask 
Successfully installed Jinja2-3.1.1 MarkupSafe-2.1.1 Werkzeug-2.1.1 click-8.1.2 flask-2.1.1 importlib-metadata-4.11.3 itsdangerous-2.1.2 zipp-3.7.0
  • 从上可知,pip install flask还会一并安装importlib-metadata、itsdangerous等7 个依赖套件,实际上总共安装了8 个套件!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • pip 替代方案选择——Pipenv vs Poetry

二. 从零开始使用Poetry

1. 安装Poetry

> - Poetry 和pip、git、pyenv 等工具一样,都是典型的命令列工具,需要先安装才能下达指令—— poetry。

2. 初始化Poetry

在这里插入图片描述

在这里插入图片描述

3. 管理Poetry 虚拟环境

在这里插入图片描述

在这里插入图片描述

4. 修改config,建立专案内.venv虚拟环境

在这里插入图片描述

5. 启动与退出虚拟环境

在这里插入图片描述

6. Poetry 指令

在这里插入图片描述

6.1. Poetry 新增套件

在这里插入图片描述

6.2. poetry.lock与更新顺序

在这里插入图片描述

6.3. poetry lock:更新poetry.lock

在这里插入图片描述

7. 指定套件「版本」范围

在这里插入图片描述

7.1. Poetry 的版本管理能力

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8. 新增套件至dev-dependencies

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9. Poetry 更新套件

在这里插入图片描述

10. 列出全部套件清单

在这里插入图片描述

11. 「树状」显示套件依赖层级

在这里插入图片描述
在这里插入图片描述

12. Poetry移除套件(remove)

在这里插入图片描述
在这里插入图片描述

13. 输出requirements.txt

poetry export -f requirements.txt -o requirements.txt --without-hashes

在这里插入图片描述

14. 输出dev-dependencies

在这里插入图片描述

在这里插入图片描述

15. Poetry 常用指令清单

在这里插入图片描述

三. Poetry 常见使用情境与操作QA

在这里插入图片描述

1. 新增专案并使用Poetry

在这里插入图片描述

2. 现有项目改用Poetry

在这里插入图片描述

3. 在别台主机上重现项目的Poetry虚拟环境

在这里插入图片描述

4. 我想要移除并重建虚拟环境

在这里插入图片描述

5. 为什么我不在Docker 环境中使用Poetry?

在这里插入图片描述

6. 我可以使用自己习惯的virtualenv 吗?

在这里插入图片描述

7. 修改 poetry 镜像源

  • 修改为清华镜像源
poetry source add tsinghua https://pypi.tuna.tsinghua.edu.cn/simple

四. 轻松打包(poetry build)和发布(poetry publish)

1. 打包(poetry build)

在这里插入图片描述

在这里插入图片描述

2. 发布(poetry publish)

# -----------------------使用账户密码方式
poetry publish --build --username xxx --password xxx
# -----------------------使用token方式
# poetry config pypi-token.pypi xxxx
poetry config pypi-token.pypi pypi-AgEIcHlwaS5vcmcCJDkxNTQ2NzA5LTY4NzMtNDhmNC04ZDczLWM2NGM2ZTI2MWNlNwACKlszLCI0OWRlYjAyZC0xNzM5LTRmNTctOWUyNi1iOTUyOWQzMzM1YWMiXQAABiCr2ay7NyHuJUnJhRPgLeWsJ7nrWE-9V28KDHiOdBK1jA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五. poetry run python如何理解

poetry run python 是一个用于在 Poetry 管理的虚拟环境中执行 Python 脚本或进入 Python 解释器的命令。具体理解可以从以下几个方面来讲解:

1. 上下文

当你在项目中使用 Poetry 时,通常会创建一个虚拟环境来管理项目的依赖和 Python 版本。这个虚拟环境是隔离的,确保你安装的库不会影响到系统的全局 Python 环境或其他项目。

2. poetry run 的作用

poetry run 命令用于在当前虚拟环境中执行后续命令。它会确保以下几点:

  • 使用虚拟环境的 Python 解释器poetry run python 将使用与当前项目相关联的虚拟环境中的 Python 解释器,而不是系统的 Python 解释器。
  • 访问虚拟环境的依赖:任何在当前虚拟环境中安装的依赖包都可用。这意味着你可以运行任何依赖于这些包的脚本,而不需要激活虚拟环境。

3. 具体示例

假设你在一个名为 my_project 的目录中,有一个 pyproject.toml 文件,且已经通过 poetry install 安装了所需依赖。

示例 1:进入 Python 解释器

你可以在项目目录中运行以下命令:

poetry run python

这会启动项目虚拟环境中的 Python 解释器,你可以在其中运行 Python 代码,而不需要手动激活虚拟环境。

示例 2:运行 Python 脚本

如果你的项目中有一个 Python 脚本 script.py,你可以这样运行它:

poetry run python script.py

这条命令会使用虚拟环境中的 Python 解释器执行 script.py,同时确保所有在 pyproject.toml 中指定的依赖都可以使用。

4. 与其他命令的配合

poetry run 不仅限于 Python 命令。你可以使用它运行任何在虚拟环境中安装的命令。例如,如果你安装了 black(一个代码格式化工具),可以这样运行:

poetry run black .

这会在当前目录下格式化代码,使用的是虚拟环境中安装的 black 版本。

总结

  • poetry run: 使得在项目的虚拟环境中运行命令成为可能,避免手动激活虚拟环境。
  • 确保环境一致性: 在运行时确保使用正确的 Python 版本和依赖。
  • 简化开发流程: 提供了一种方便的方式来执行脚本和命令,无需关注环境的切换。

这种方式在管理项目依赖和执行环境时,非常高效和灵活。

五. 参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI大模型前沿研究

感谢您的打赏,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值