Poetry的安装及使用
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有两种初始化项目的方式,init和new
对于新项目,建议使用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# 指定python版本poetry env use /full/path/to/pythonpoetry env use python3.7poetry env use 3.7poetry env use system# 显示环境poetry env infopoetry env info --path# 列出环境poetry env list# 删除环境poetry env remove /full/path/to/pathpoetry env remove python3.7poetry env remove 3.7poetry env remove system
https://python-poetry.org/docs/managing-environments/#deleting-the-environments
poeery自身管理
# 升级poetry self update# 检查配置poetry check# 导出成requirements.txtpoetry 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,把开发时的一些依赖放进去,可降低生产环境安装的依赖包数量
