Poetry入门教程

以前使用模块管理和虚拟环境为pip和Virtualenv组合,随着Rasa、Dify等开源项目逐步使用Poetry模块管理,也开始尝试使用Poetry。本文简要介绍Poetry入门操作。

1.Poetry安装

可参考Poetry官网[1]推荐的安装方式:

通过Windows的Powershell如下:

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

配置Poetry环境变量:

查看Poetry版本和路径:

通过poetry new创建一个新的Poetry项目:

2.管理虚拟环境

poetry 默认会将虚拟环境统一放在指定目录,即 C:\Users\xxx\AppData\Local\pypoetry\Cache\virtualenvs\。虚拟环境的命名规则为项目名-随机数-python版本。如何将虚拟环境放在当前项目目录中呢?通过命令poetry config --list如下:

PS F:\Python资料\PythonProject\PythonExample> poetry config --list
cache-dir = "C:\\Users\\wangs\\AppData\\Local\\pypoetry\\Cache"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}\\virtualenvs"  # C:\Users\wangs\AppData\Local\pypoetry\Cache\virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = true

将virtualenvs.in-project设置为true即可:

poetry config virtualenvs.in-project true

通过命令poetry add flask试一试:

可以看到当执行 poetry add 指令时,poetry 会自动检查当下是否正在使用虚拟环境,如果没有,那么会自动创建一个新的虚拟环境,然后再安装模块。

进入虚拟环境变量的命令为poetry shell,退出虚拟环境变量的命令为exit

3.Poetry常用命令 [2]

Poetry常用命令、功能和示例:

命令功能示例
poetry add添加依赖到项目poetry add requests
poetry remove从项目中移除依赖poetry remove requests
poetry export导出依赖到其它格式文件poetry export -f requirements.txt
poetry env use指定项目使用的Python解释器poetry env use python3.8
poetry shell启动项目的虚拟环境poetry shell
poetry show显示项目依赖的详细信息poetry show requests
poetry init初始化一个新项目并生成pyproject.tomlpoetry init
poetry install安装项目依赖poetry install
poetry new创建一个新的Poetry项目poetry new my_project
poetry build打包项目,通常在 dist 目录poetry build
poetry publish发布项目到PyPIpoetry publish --username <your-username> --password <your-password>

可修改Poetry为清华镜像源:

poetry source add tsinghua https://pypi.tuna.tsinghua.edu.cn/simple

4.pyproject.toml和poetry.lock关系

当使用 poetry add 指令时,poetry 会自动更新 [4]:

  • 更新 pyproject.toml

  • 依照 pyproject.toml 内容,更新 poetry.lock

  • 依照 poetry.lock 内容,更新虚拟环境

poetry.lock 实际上相当于 piprequirements.txt 文件,详细记录了所有安装的模块与版本。

(1)pyproject.toml文件

这段代码是一个pyproject.toml文件的内容,用于配置和管理一个Python项目。

[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["wangss <913292836@qq.com>"]
readme = "README.md"

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


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

[tool.poetry] 部分包含了与Poetry项目相关的基本信息:

  • name: 项目的名称,这里是 "poetry-demo"

  • version: 项目的版本号,这里是 "0.1.0"

  • description: 项目的描述,这里为空字符串。

  • authors: 项目的作者列表,这里是 ["wangss <913292836@qq.com>"]

  • readme: 项目的README文件,这里是 "README.md"

[tool.poetry.dependencies] 部分定义了项目的依赖:

  • python: 项目所需的Python版本,这里是 "^3.10",表示需要Python 3.10版本及其以上的版本。

[build-system] 部分指定了构建系统的信息:

  • requires: 构建系统所需的包列表,这里是 ["poetry-core"]

  • build-backend: 构建后端,这里是 "poetry.core.masonry.api",表示使用Poetry的核心构建API。

(2)poetry.lock文件

这段代码是一个由Poetry生成的poetry.lock文件的一部分,用于锁定项目的依赖关系版本,确保项目在不同环境中具有一致的依赖。

# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
package = []

[metadata]
lock-version = "2.0"
python-versions = "^3.10"
content-hash = "53f2eabc9c26446fbcc00d348c47878e118afc2054778c3c803a0a8028af27d9"

package 部分:通常会列出所有被锁定的依赖包及其版本信息。在这里它是一个空列表,表示当前项目没有额外的依赖或依赖尚未锁定。

package = []

[metadata] 部分:包含了关于锁文件和项目的一些元数据信息:

  • lock-version: 锁文件的版本,这里是 "2.0"。这表明文件遵循Poetry锁文件的2.0版本规范。

  • python-versions: 项目所支持的Python版本范围,这里是 "^3.10",表示需要Python 3.10版本及其以上的版本。

  • content-hash: 内容哈希值。该哈希值用于验证依赖关系的完整性,确保依赖关系未被篡改。

5.poetry安装whl文件

pip是可以直接安装whl文件的,如何通过poetry安装whl文件呢?Poetry 主要用于管理项目依赖和构建,而不像 pip 那样直接安装 .whl 文件。不过,Poetry 可间接地通过 pyproject.toml 文件指定依赖来安装 .whl 文件。如果已经有一个 .whl 文件,并且希望使用 Poetry 安装它,可以通过以下步骤来实现:

(1) 创建或更新 pyproject.toml

在项目的 pyproject.toml 文件中添加对本地 .whl 文件的依赖。假设 .whl 文件路径是 ./dist/poetry_demo-0.1.0-py3-none-any.whlpyproject.toml 文件可像这样配置:

[tool.poetry]
name = "example-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = "^3.10"
poetry-demo = { path = "./dist/poetry_demo-0.1.0-py3-none-any.whl" }

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

(2)使用 Poetry 安装依赖

在项目目录下运行以下命令来安装依赖,包括本地的 .whl 文件。这样Poetry 会根据 pyproject.toml 文件中的配置来安装依赖,包括本地的 .whl 文件。

poetry install

参考文献

[1] Poetry官方文档:https://python-poetry.org/docs/

[2] Poetry的帮助文档:https://github.com/GeekFong/how_to_use_poetry/blob/main/How_To_Use_Poetry/Poetry的帮助文档

[3] https://github.com/python-poetry/poetry

[4] poetry 入门完全指南:https://notes.zhengxinonly.com/environment/use-poetry.html

[5] https://pypi.org/

NLP工程化(星球号)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值