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: 安装最新稳定版本的flaskpoetry 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.0poetry 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文件