Python 项目管理:Poetry
1. 导读
本文将介绍一个目前非常风行,且用于泛滥 Python
我的项目中 依赖治理 和打包的工具,蕴含根本的装置与应用。
2. Poetry
Poetry 是 Python 中用于 依赖治理 和打包的工具。它容许您申明我的项目所依赖的库,并将为您治理(装置 / 更新)它们。Poetry 提供了一个锁定文件以确保可反复装置,并且能够构建您的我的项目以进行散发。
2.1. *toml 文件
pyproject.toml
能够算是 Poetry
的外围配置文件了,外面蕴含了我的项目的相干信息,应用的环境信息,装置的依赖信息,次要有一下配置:
# 我的项目包的名字
name = "my-package"
# 版本
version = "0.1.0"
# 包的形容
description = "A short description of the package."
# 许可证
license = "MIT"
# 作者
authors = ["冷冻工厂 <[email protected]>",]
# 维护者
maintainers = ["冷冻工厂 <[email protected]>",]
# READMD 文件
readme = ["docs/README1.md", "docs/README2.md"]
# 包的介绍主页
homepage = "https://python-poetry.org/"
# 仓库地址
repository = "https://github.com/python-poetry/poetry"
# 文档
documentation = "https://python-poetry.org/docs/"
3. 实战
3.1. 装置
在 Linux、macOS、Windows (WSL)中装置Poetry
- Linux、macOS、Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 -
- 降级现有
Poetry
poetry self update
3.2. 新建我的项目
- 创立新的我的项目
poetry new project-name
# 我的项目名 与 文件夹名 不同
poetry new folder-name --name project-name
# 应用 src 我的项目构造(可选)poetry new --src project-name
# 初始化曾经存在的我的项目
cd project-name-dir
poetry init
3.3. 环境治理
poetry 首先会查看以后我的项目是否存在虚拟环境,如果存在,放弃现有环境,如果没有,会主动创立一个与以后依赖相匹配的环境。
- 抉择我的项目环境
poetry env use /full/path/to/python
# 如果解释器曾经增加到环境变量中
poetry env use python3.7
poetry env use 3.7 # 同上,二选一
- 显示以后环境信息
poetry env info
- 显示与以后我的项目相干的环境
poetry env list
- 删除环境
poetry env remove /full/path/to/python
# 同时删除多个环境
poetry env remove python3.6 python3.7 python3.8
# 一次性删除全副环境
poetry env remove --all
小编倡议设置上面配置,其作用是将虚拟环境的文件夹搁置于我的项目文件夹下
poetry config virtualenvs.in-project true
3.4. 依赖治理
应用 Poetry
进行增加依赖,有两种形式。一种是在命令行中,间接应用相干命令来增加依赖,或者删除依赖。另外一种是,通过批改我的项目中的 pyproject.toml
文件,来治理依赖。
- 命令行治理
# 增加依赖
poetry add <lib>
# 增加 dev 依赖
poetry add <lib> --dev # poetry add package-name -D
# 删除依赖
poetry remove <lib>
# 更新依赖
poetry update
# 锁定依赖版本
poetry lock
# 列出全副依赖项
poetry show
# 列出古老的依赖项
poetry show --outdated
# 搜寻指定的包
poetry search <name>
- 配置文件治理
[tool.poetry]
name = "project-name"
version = "0.1.0"
description = ""authors = ["Swindler <[email protected]@qq.com>"]
readme = "README.md"
packages = [{include = "project_name"}]
[tool.poetry.dependencies]
python = "^3.8"
# 在此间接增加,如 0.1.0 版本的 numpy
numpy = "0.1.0"
# 如果不晓得指定的版本,能够用 * 代替,Poetry 会主动抉择适合的版本
numpy = "*"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
依据配置文件更新依赖
poetry update
依赖的版本指定,反对不等式(简略易用)
>= 1.2.0
> 1
< 2
!= 1.2.3
3.5. 换源
Poetry
也反对换源,减速依赖的下载速度.
- 清华源
# 将下方配置增加至 pyproject.toml 开端即可
[[tool.poetry.source]]
name = "tsinghua-source"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
default = true # 仅从定义仓库获取
- 阿里源
# 将下方配置增加至 pyproject.toml 开端即可
[[tool.poetry.source]]
name = "aliyun-source"
url = "http://mirrors.aliyun.com/pypi/simple/"
default = true # 仅从定义仓库获取
3.6. requirement
Poetry
也反对 requirement.txt
操作
- 导出
requirement.txt
poetry export -f requirements.txt --output requirements-prod.txt --without-hashes
- 导入
requirement.txt
cat requirements.txt|xargs poetry add
获取更多 Python 常识与材料,请评论区留言或私聊小编回复“Python 材料”,可支付《晦涩的 Python》。
本文由 mdnice 多平台公布