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/python
poetry env use python3.7
poetry env use 3.7
poetry env use system
# 显示环境
poetry env info
poetry env info --path
# 列出环境
poetry env list
# 删除环境
poetry env remove /full/path/to/path
poetry env remove python3.7
poetry env remove 3.7
poetry env remove system
https://python-poetry.org/docs/managing-environments/#deleting-the-environments
poeery自身管理
# 升级
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
,把开发时的一些依赖放进去,可降低生产环境安装的依赖包数量