Python 依赖管理和打包 poetry

MIT
Python
跨平台
2018-09-18
Kinegratii

概述

poetry 是一个包管理和打包的工具。

在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: `setup.py` ,`requirements.txt`,`setup.cfg` , `MANIFEST.in` ,还有最新的 `Pipfile`。

基于此, poetry 将所有的配置都放置在一个 toml 文件中,这些配置包括:依赖管理、构建、打包、发布。

poetry 的灵感来自于其他语言的一些工具: composer(PHP) 和 cargo (Rust) 。

poetry

配置

poetry 的项目配置文件是 pyproject.toml ,一个简单的示例文件如下:

[tool.poetry]
name = "poetry"
version = "0.11.5"
description = "Python dependency management and packaging made easy."
authors = [
    "Sébastien Eustace <sebastien@eustace.io>"
]
license = "MIT"

readme = "README.md"

homepage = "https://poetry.eustace.io/"
repository = "https://github.com/sdispater/poet"
documentation = "https://poetry.eustace.io/docs"

keywords = ["packaging", "dependency", "poetry"]

classifiers = [
    "Topic :: Software Development :: Build Tools",
    "Topic :: Software Development :: Libraries :: Python Modules"
]

# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.4"
cleo = "^0.6.7"
requests = "^2.18"
cachy = "^0.2"
requests-toolbelt = "^0.8.0"
jsonschema = "^2.6"
pyrsistent = "^0.14.2"
pyparsing = "^2.2"
cachecontrol = { version = "^0.12.4", extras = ["filecache"] }
pkginfo = "^1.4"
html5lib = "^1.0"
shellingham = "^1.1"
tomlkit = "^0.4.4"

# The typing module is not in the stdlib in Python 2.7 and 3.4
typing = { version = "^3.6", python = "~2.7 || ~3.4" }

# Use pathlib2 for Python 2.7 and 3.4
pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" }
# Use virtualenv for Python 2.7 since venv does not exist
virtualenv = { version = "^16.0", python = "~2.7" }

[tool.poetry.dev-dependencies]
pytest = "^3.4"
pytest-cov = "^2.5"
mkdocs = "^1.0"
pymdown-extensions = "^4.9"
pygments = "^2.2"
pytest-mock = "^1.9"
pygments-github-lexers = "^0.0.5"
black = { version = "^18.3-alpha.0", python = "^3.6" }
pre-commit = "^1.10"
tox = "^3.0"


[tool.poetry.scripts]
poetry = "poetry.console:main"

命令

poetry 提供了一系列覆盖整个开发流程的命令,这些命令使用简单:

poetry 命令
名称功能
new 创建一个项目脚手架,包含基本结构、pyproject.toml 文件
init基于已有的项目代码创建 pyproject.toml 文件,支持交互式填写
install安装依赖库
update更新依赖库
add添加依赖库
remove移除依赖库
show查看具体依赖库信息,支持显示树形依赖链
build构建 tar.gz 或 wheel 包
publish发布到 PyPI
run运行脚本和代码


的码云指数为
超过 的项目
加载中

评论(1)

wei2011
wei2011
正在试用了,感觉挺不错,比如pipenv快

暂无资讯

暂无问答

java 中用split()为古诗断句

public class exesice02 { public static void main(String[] args) { System.out.println("床前明月光\t疑是地上霜\t举头望明月\t低头思故乡"); String shi = "床前明月光\t疑是地上霜\t举头...

2018/04/12 17:34
2
0
(转) Twisted :第二十部分 轮子中的轮子: Twisted和Erlang

第二十部分 轮子中的轮子: Twisted和Erlang

2016/01/27 13:24
20
1
(转) Twisted 第四部分: 由Twisted支持的诗歌客户端

第四部分: 由Twisted支持的诗歌客户端

2016/01/27 13:20
12
1
(转) Twisted : 第八部分 使用Deferred的诗歌下载客户端

第八部分 使用Deferred的诗歌下载客户端

2016/01/27 13:21
19
1
(转) Twisted :第七部分 小插曲,Deferred

第七部分 小插曲,Deferred

2016/01/27 13:21
17
1
(转) Twisted :第六部分 抽象地利用Twisted

第六部分 抽象地利用Twisted

2016/01/27 13:21
12
1
(转) Twisted :第十部分 增强defer功能的客户端

第十部分 增强defer功能的客户端

2016/01/27 13:22
14
1
(转) Twisted : 第十五部分 测试诗歌

第十五部分 测试诗歌

2016/01/27 13:23
9
1
深度有趣 | 23 歌词古诗自动生成

简介 使用RNN实现歌词和古诗的自动生成 RNN多用于处理序列数据,通过学习数据上下文之间的关系,可以在给定若干个连续数据点的基础上,预测下一个可能的数据点 以下是最基础的RNN公式,当然也...

2018/09/21 20:22
24
0
安卓巴士Android开发者门户

一、开源库 1.SimpleRatingBar 简单好用的ratingbar 2.NumberRain Android自定义控件仿黑客帝国数字雨 3.CacheWebView 突破系统WebView缓存的空间限制的WebView 4.luckly_popup_window Andro...

2018/06/22 14:51
14
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部