poetry基本使用

767 阅读2分钟

poetry是一个Python虚拟环境和依赖管理的工具,还提供了打包和发布的功能。

官方网站:python-poetry.org

环境

Vs Code devcontainer(可选)

首先本地启动一个python环境,因为想着多个项目共享一个容器环境,所以用docker-compose手动启动容器环境,当然也可以在VS Code中选择"新的开发容器"创建项目的开发容器。启动完开发容器后,可以用devcontainer插件,选择"附加到正在运行的开发容器"从而把我们的项目附加到开发容器环境。

services:
  python:
    image: mcr.microsoft.com/devcontainers/python:1-3.12-bullseye
    container_name: python
    command: sleep infinity
    volumes:
      - python:/home/vscode:cached
      - ../../python:/workspace/python:cached # 可以附加本地项目目录
volumes: # vscode 环境持久化卷
  python:

安装poetry

执行命令 pipx install poetry 安装poetry, 当然还有其他安装方式,具体看Introduction | Documentation | Poetry

基本使用

添加poetry管理

新建项目可以通过 poetry new . 来初始化项目,已有项目则用 poetry init。 初始化项目的项目包括基本结构、pyproject.toml文件,基于每个人的项目目录不同,推荐在已有项目添加poetry管理。

虚拟环境

第一次使用poetry add或者poetry install命令会自动创建虚拟环境, 可以用poetry env list 查看虚拟环境列表。

  • poetry env list: 查看虚拟环境列表,加上--full-path,可显示绝对路径
  • poetry env use python3: 指定创建虚拟环境时使用的Python解释器版本
  • poetry env activate: 查看激活的环境,poetry并不需要激活虚拟环境,因为poetry会自动检测当前虚拟环境
  • poetry env remove python3: 删除虚拟环境
  • poetry env -h: 查看帮助文档

依赖管理

按照依赖

  • poetry add flask: 安装最新稳定版本的flask
  • poetry add pytest --dev: 指定为开发依赖,会写到pyproject.toml中的[tool.poetry.dev-dependencies]区域
  • poetry add flask=2.22.0: 指定具体的版本
  • poetry install : 安装pyproject.toml文件中的全部依赖
  • poetry install --no-dev : 只安装非development环境的依赖,一般部署时使用

追踪&更新包

  • poetry show -h: 可以查看poetry show之后可以加什么参数
  • poetry show: 查看项目安装的依赖
  • poetry show -t: 树形结构查看项目安装的依赖
  • poetry update: 更新所有锁定版本的依赖, '^0.0.1'会更新到最新的小版本,如0.0.5,不会更新到0.1.0
  • poetry update flask: 更新指定依赖

卸载依赖

  • poetry remove flask: 卸载对应的依赖

poetry config配置

config.toml文件

poetry提供了全局config配置和特定项目的config配置。

  • poetry config --list 命令可以列出全局的config配置。 获得类似的输出:
cache-dir = "/path/to/cache/directory"
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = true
virtualenvs.options.no-pip = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /path/to/cache/directory/virtualenvs
virtualenvs.prompt = "{project_name}-py{python_version}"
virtualenvs.use-poetry-python = false
  • poetry config virtualenvs.path: 单独某项配置
  • poetry config virtualenvs.path /path/to/cache/directory/virtualenvs: 更新配置
  • poetry config virtualenvs.path --unset: 重置配置
  • poetry config virtualenvs.create false --local: 加--local来配置当前项目的配置,执行后,会在当前项目生成poetry.toml文件