首页 公告 RSS

使用poetry代替pip

November 8, 2023 本文有 526 个字 需要花费 2 分钟阅读

简介

pip 有很多缺点比如在 requirements.txt中定义的都是顶级包的版本,但是如果这些包的下游有改动那就保证不了项目的一致性,但是 poetry 会有一个 lock 文件去保证上下游依赖的一致性,不会出现一些莫名其妙的问题,并且提供了创建虚拟环境,构建发布等等的功能

操作

我一般使用的是 pycharm 去开发,pycharm提供了对Poetry的支持,在使用之前我们需要去安装 poetry

curl -sSL https://install.python-poetry.org | python3 -

安装完成之后需要配置环境变量,我使用的是 zsh

vim ~/.zshrc

添加

export PATH="/Users/bboysoul/.local/bin:$PATH"

输入

poetry --help

确认安装没有问题

配置 poetry 的自动补全

poetry completions zsh > ~/.zfunc/_poetry

~/.zshrc加入

fpath+=~/.zfunc
autoload -Uz compinit && compinit

之后修改 pycharm 中的虚拟环境,如下图

确认完成之后 pycharm 会自动创建一个项目的虚拟环境并且在项目中添加pyproject.toml这个文件

之后你就可以使用

poetry add

去安装依赖了

一些常用的操作

  • 创建一个项目

poetry new poetry-demo

  • 在已经有的项目中使用 poetry

cd pre-existing-project

poetry init

  • 激活你的虚拟环境

poetry shell

  • 添加一个依赖

poetry add requests

  • 更新一个依赖

poetry update requests

  • 删除依赖

poetry remove requests

  • 列出所有依赖

poetry show

  • 查看依赖之间的关系

poetry show --tree

  • 列出虚拟环境

poetry env list

  • 使用虚拟环境

poetry env use

一个示例 dockerfile

如果你的项目是容器化的话,可以看下我这个 dockerfile

FROM python:3-alpine3.14
WORKDIR /app
RUN /bin/cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN pip install poetry==1.7.0
COPY pyproject.toml poetry.lock README.md .
RUN poetry install
COPY . .
CMD ["poetry", "run", "python", "main.py"]

虽然不是最优的,但是足够使用

参考文档

欢迎关注我的博客www.bboy.app

Have Fun