简介
peotry可以进行依赖管理(支持锁定版本)、虚拟环境管理,可以处理复杂的依赖关系和版本冲突,简化构建和发布。
相对pip的优势:能解决版本冲突,移除某个组件会把相关依赖都移除,pip只会移除本身,导致后续包冲突可能性较大。
安装
为了避免peotry需要的依赖跟你的项目冲突,通常我们使用pipx安装peotry,pipx会为安装的每个工具单独创建一个虚拟环境,把工具对应的二进制可执行文件放入到PATH中。
# windows install pipx, doc: https://pipx.pypa.io/stable/installation/
pip install --user pipx
# 环境变量添加pipx管理的工具(%USERPROFILE%\.local\bin和<USER folder>\AppData\Roaming\Python\Python3x\Scripts)
pipx ensurepath# ubuntu install pipx
sudo apt update
sudo apt install pipx
pipx ensurepath
sudo pipx ensurepath --global # optional to allow pipx actions in global scope. See "Global installation" section below.# pipx会为每个独立的python工具创建一个单独的虚拟环境,并将工具的可执行文件链接到~/.local/bin/poetry
pipx install poetry
使用
项目基本操作
# 设置在项目中创建虚拟环境
poetry config virtualenvs.in-project true# 初始化项目
poetry init
poetry env list
poetry env info --path# 添加依赖
poetry add fastapi
# 安装依赖
poetry install
# 移除依赖
poetry remove fastapi
配置镜像仓库
镜像仓库可以直接用pip的,配置语法稍微有些不同。
针对项目配置:
# 会修改项目的pyproject.toml文件
poetry source add tuna --priority=primary https://pypi.tuna.tsinghua.edu.cn/simple
poetry lock --no-update# 安装新的依赖,并更新已安装的依赖项到符合要求的版本
poetry install
# 确保已安装的依赖跟pyproject.toml中声明的一致,会移除不需要的包避免包冲突
poetry install --sync --no-cache --no-root
全局配置
%APPDATA%\pypoetry\config.toml
[[tool.poetry.source]]
name = "ali"
url = "https://mirrors.aliyun.com/pypi/simple/"
priority = "primary"
[repositories.ali]
url = "https://mirrors.aliyun.com/pypi/simple/"[virtualenvs]
in-project = true