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

Poetry 使用

Poetry

poetry 是一个包管理和打包的工具。
poetry 将所有的配置都放置在一个 pyproject.toml 文件中,这些配置包括:依赖管理、构建、打包、发布。

Windows 环境

下载 python 3.12.7 ,默认安装 C:\Users\fernando\AppData\Roaming\Python\Python312

$ cd C:\Users\fernando\AppData\Roaming\Python\Python312
$ py -m pip install --user pipx
$ pipx ensurepath
$ pipx install poetry

poetry 新建一个项目

$ cd proj
$ poetry new example01

创建一个项目文件夹

proj
| -- example01
     | -- example01
          | -- __init__.py
     | -- tests
          | -- __init__.py
     | --pyproject.toml
     | -- README.md

__init__.py 文件用于将一个目录标记为 Python 包。
pyproject.toml 是 Python 项目中用于配置构建系统和工具的标准化文件

pyproject.toml

pyproject.toml 文件内容

[tool.poetry]
name = "example01"
version = "0.1.0"
description = ""
authors = ["lokcoffee <fernandoshui@outlook.com>"]
readme = "README.md"

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


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
  • 构建系统需求
    • 所需工具 如:peotry-core
  • 项目元数据
    • 名称 name="example01
    • 版本 version = “0.1.0”
    • 作者 …
  • 自动化工具配置

设置虚拟环境在项目下,此时还不存在虚拟环境目录 example01\.venv

$ poetry config --list
$ poetry config virtualenvs.in-project true

peotry 依赖

新增request依赖
$ poetry add requests

此时已存在虚拟环境目录 example01\.venv,同时在example01根目录下生成 peotry.lock,此文件不建议手动更改

| -- example01
     | -- example01
     | -- tests
     | -- poetry.lock
     | --pyproject.toml
     | -- README.md
删除request 依赖
$ poetry remove requests

在pyproject.toml中,新增国内源地址,如清华源

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


[[tool.poetry.source]]
name = "tsinghua"
default = true
url = "http://pypi.tuna.tsinghua.edu.cn/simple"

新增完成后,需执行更新依赖

更新依赖
$ poetry update

同时会自动更新 poetry.lock

其他命令

搜索依赖
$ poetry search requests
构建
$ poetry build
发布
$ poetry publish

在已有一个项目,创建peotry项目

$ cd proj
$ cd example02
$ poetry init

__init__.py

除了上面的使该目录被视为一个包。其还可以写相关的脚本,如

# 如在此文件 example01/__init__.py
# 打印
print("Initializing example01...")

# 设置常量
PACKAGE_VERSION = "1.0.0"

http://www.kler.cn/a/418273.html

相关文章:

  • 大数据治理:解锁数据价值,引领未来创新
  • ESP32-S3模组上跑通ES8388(12)
  • 量化交易系统开发-实时行情自动化交易-8.2.发明者FMZ平台
  • Web 端网站后台裁剪功能:提升图像管理效率的利器
  • 【AI】JetsonNano启动时报错:soctherm OC ALARM
  • Qt桌面应用开发 第七天(绘图事件 绘图设备)
  • 【maven-5】Maven 项目构建的生命周期:深入理解与应用
  • 偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题
  • 新手SEO入门指南如何高效进行搜索引擎优化
  • ESLint CLI 深度解析:配置选项与高效工作流(5)
  • Python脚本:自动化下载视频的日志记录
  • 【从零开始的LeetCode-算法】3264. K 次乘运算后的最终数组 I
  • 使用lumerical脚本语言创建弯曲波导并进行数据分析(纯代码实现)
  • 【CSS in Depth 2 精译_062】第 10 章 CSS 中的容器查询(@container)概述 + 10.1 容器查询的一个简单示例
  • 安全见闻1
  • 冒泡排序算法介绍以及java实现
  • SQL调优分析200倍性能提升
  • Vue3+Echarts+echarts-wordcloud插件创建词云图
  • Docker命令总结
  • sys.stdout和sys.stdout.buffer
  • pnpm安装electron出现postinstall$ node install.js报错
  • 【中间件】Redis
  • 大模型开发和微调工具Llama-Factory-->量化1(GPTQ 和 AWQ)
  • Java并发07之ThreadLocal
  • fatal error:boostdesc_bgm.i:no such file or directory
  • 【学习笔记】基于RTOS的设计中的堆栈溢出(Stack Overflow)-第1部分