站点图标 兰玉磊的个人博客

Python Poetry 代码依赖管理

Python Poetry 代码依赖管理

Poetry 的历史

Poetry 是一个 Python 依赖项管理工具。

这里提到了开发 Poetry 的主要原因 项目 readme.

Python 中的打包系统和依赖性管理相当复杂,对于新手来说很难理解。即使对于经验丰富的开发人员,有时创建 Python 项目所需的所有文件也可能很麻烦:setup.py, requirements.txt, setup.cfg, MANIFEST.in 和新添加的 Pipfile。

确实有很多我们应该考虑的文件,例如:

接下来,我们将对其进行设置!

配置 Poetry

要求

Python 2.7 or 3.4+。

我将在本文中使用 Python 3.6.0。

$ python --version
Python 3.6.0

下载安装

通过提供的安装程序安装 Poetry。

$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
Retrieving Poetry metadata

# Welcome to Poetry!

This will download and install the latest version of Poetry,
a dependency and package manager for Python.

It will add the `poetry` command to Poetry's bin directory, located at:

$HOME/.poetry/bin

This path will then be added to your `PATH` environment variable by
modifying the profile files located at:

$HOME/.profile
$HOME/.bash_profile

You can uninstall at any time with `poetry self:uninstall`,
or by executing this script with the --uninstall option,
and these changes will be reverted.

Installing version: 0.12.12
  - Downloading poetry-0.12.12-darwin.tar.gz (7.23MB)

Poetry (0.12.12) is installed now. Great!

To get started you need Poetry's bin directory ($HOME/.poetry/bin) in your `PATH`
environment variable. Next time you log in this will be done
automatically.

To configure your current shell run `source $HOME/.poetry/env`

要激活 poetry 命令,请运行以下命令:

source $HOME/.poetry/env

现在,poetry 命令应该可用。让我们检查一下安装的 Poetry 版本。

$ poetry —version
Poetry 0.12.12

成功!

Poetry 演示

创建模板

首先,我将创建一个演示应用程序。

poetry new poetry-demo

项目结构是这样的。

$ cd poetry-demo
$ tree
.
├── README.rst
├── poetry_demo
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_poetry_demo.py

让我们来看看 pyproject.toml

[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = ["[Your Name] <[Your Email]>"]

[tool.poetry.dependencies]
python = "^3.6"

[tool.poetry.dev-dependencies]
pytest = "^3.0"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

添加依赖

我可以直接在 pyproject.toml 文件中指定依赖项,但是使用 add 命令看起来很容易。

poetry add pendulum

自动将 pendulum 添加到 pyproject.toml 文件中。

[tool.poetry.dependencies]
python = "^3.6"
pendulum = "^2.0"

此外,还会创建 poetry.lock

$ tree
.
├── README.rst
├── poetry.lock
├── poetry_demo
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_poetry_demo.py

命令参数详解

poetry add flask  # 安装最新稳定版本的flask

poetry add pytest --dev  # 指定为开发依赖,会写到pyproject.toml中的[tool.poetry.dev-dependencies]区域

poetry add flask=2.22.0  # 指定具体的版本

poetry install  # 安装pyproject.toml文件中的全部依赖

poetry install --no-dev  # 只安装非development环境的依赖,一般部署时使用<br />

poetry update  #更新所有锁定版本的依赖包

poetry update numpy  # 更新指定依赖包

poetry remove numpy  # 卸载依赖包

poetry show --outdated  # 查看可以更新的依赖

poetry show  # 查看项目安装的依赖

poetry show -t  # 树形结构查看项目安装的依赖

虚拟环境管理

创建虚拟环境

创建虚拟环境有2种方式:

方式1:

如果在配置文件中配置了virtualenvs.create=true,执行poetry install时会检查是否有虚拟环境,否则会自动创建。

方式2:

# 指定创建虚拟环境时使用的Python解释器版本
$ poetry env use python3.7

命令参数详解

poetry shell  # 激活虚拟环境

poetry env info  # 查看虚拟环境信息

poetry env list  # 显示虚拟环境列表

poetry env list --full-path  # 显示虚拟环境绝对路径

poetry env remove python3.7  # 删除虚拟环境

poetry run python -V  # 查看python版本

退出移动版