Poetry的安装及使用
Python
Published: 2020-09-29

Python的包管理一直算是个痛点,作为Python基金会官方钦定的Pipenv并不是太给力,反倒中途杀出的Poetry,让人眼前一亮。 今天我们就快速入门一下Poetry。

安装&配置

通过命令行,直接安装:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

安装之后,推荐设置成在项目目录下生成virtualenv文件夹,管理起来更直观:

poetry config virtualenvs.in-project true

使用

项目初始化

Poetry有两种初始化项目的方式,initnew

对于新项目,建议使用new来初始化:

poetry new <project_name>

会自动生成项目的框架结构:

├── README.rst
├── demo_project
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_demo_project.py

对于旧的项目,可以使用:

poetry init

会逐步引导初始化poetry项目。

文件说明

不论是用哪种方式初始化,最终都会在项目里创建两个主要文件:

  • pyproject.toml: 用于配置项目的基础信息和声明依赖。
  • poetry.lock: 添加第一个依赖之后会生成,并会随着每次对依赖包的修改(添加、更新、删除等)而发生改变,该文件用于精确锁定项目所使用的依赖的版本,以确保相同代码在运行时的环境一致。

依赖管理

# 添加依赖
poetry add <lib>

# 添加dev依赖
poetry add <lib> --dev

# 删除依赖
poetry remove <lib>

# 更新依赖
poetry update

# 锁定依赖版本
poetry lock

# 列出全部依赖项
poetry show

# 列出陈旧的依赖项
poetry show --outdated

# 搜索指定的包
poetry search <name>

运行环境

# 运行单个文件
poetry run python3 xxx.py

# 进入到env环境中
poetry shell

# 退出环境
deactivate

其他维护命令

# 升级
poetry self update

# 检查配置
poetry check

# 导出成requirements.txt
poetry export -f requirements.txt > requirements.txt

# 查看配置
poetry config --list

# 修改配置
poetry config <key> <value>

# 清除指定来源(如pypi)的全部缓存
poetry cache clear pypi --all

经验

  • 建议设置virtualenvs.in-project模式,方便使用,但是把.venv放到.gigignore中排除,避免不必要的仓库变动
  • poetry.lock是精确安装指定版本的依据,建议放入代码仓库中管理
  • 用好dev-dependencies,把开发时的一些依赖放进去,可降低生产环境安装的依赖包数量

参考链接