乐趣区

关于程序员:Python项目管理-Poetry

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 文件,来治理依赖。

  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 版本的 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 多平台公布

退出移动版