简介
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