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-dirpoetry init

3.3. 环境治理

poetry首先会查看以后我的项目是否存在虚拟环境,如果存在,放弃现有环境,如果没有,会主动创立一个与以后依赖相匹配的环境。

  • 抉择我的项目环境
poetry env use /full/path/to/python# 如果解释器曾经增加到环境变量中poetry env use python3.7poetry 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文件,来治理依赖。

  1. 命令行治理
# 增加依赖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>
  1. 配置文件治理
[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 版本的numpynumpy = "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多平台公布