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

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

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

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

配置

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

[tool.poetry]

name = "poetry"

version = "0.11.5"

description = "Python dependency management and packaging made easy."

authors = [

"Sébastien Eustace "

]

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

运行脚本和代码

python语言依赖平台_poetry首页、文档和下载 - Python 依赖管理和打包工具 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. 能够语义化的编写html文档,HTML语义化 - 写给未来的自己 - OSCHINA - 中文开源技术交流社区...

    为什么要使用语义化标签? 为了在没有css的情况下,页面也能呈现出良好的文档结构和代码结构: 提高用户体验,例如title.alt可进行详细说明: 有利于SEO,爬虫只看得懂代码: 方便特殊设备的解析 ...

  2. xml和java用户管理系统_XMLBeans首页、文档和下载 - XML-Java绑定工具 - OSCHINA - 中文开源技术交流社区...

    XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档. Eclipse支持插件:xmlbeansplug(在线更新地址). 下面是一段使用 XMLBeans 的代码: Fi ...

  3. python数值运算操作符也叫做内置操作符_Python的操作符 - osc_r1gtal48的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.数值运算符 python提供了9个基本的数值运算符,这些运算符由编译器直接提供,所以叫做内置运算符(操作符): 运算符 功能 + 加 - 减 * 乘 / 除 % 模 ** 幂 // 整除 -i 负 ...

  4. python编译 pyd 工具_avalon-fsn首页、文档和下载 - Python 编译构造工具 - OSCHINA - 中文开源技术交流社区...

    avalon-fsn avalon-fsn 是一个Python的编译构造工具,能够将你的代码Cython 使用avalon-fsn的好处 代码Cython化:Windows下把代码编译为pyd,Lin ...

  5. python数组和链表的区别_数组和链表的区别 - toddler的个人空间 - OSCHINA - 中文开源技术交流社区...

    数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同 ...

  6. python回车和换行的区别_回车与换行的区别 - bithup的个人空间 - OSCHINA - 中文开源技术交流社区...

    区别: \r: 全称:carriage return (carriage是"字车"的意思,打印机上的一个部件) 简称:return 缩写:r ASCII码:13 作用:把光标移动到 ...

  7. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...

    实例描述 配送中心数为 $1$,客户数 $k$为 $8$,车辆总数 $m$为 $2$:车辆载重皆为 $8$ 吨:各客户点需求为 $g(i = 1, 2, ... , 8)$(单位为吨),已知客户点与配 ...

  8. c语言试题c组卡片换位,蓝桥杯 卡片换位 - 李韬|aitom|机器人|SLAM - OSCHINA - 中文开源技术交流社区...

    题目描述: 卡片换位 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏. 看下面 3 x 2 的格子 +---+---+---+ |  A  |  *   |  *   | +---+---+-- ...

  9. c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...

    分治法求众数 Problem Description 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为 众数.例如,S={1,2,2,2,3,5}. ...

最新文章

  1. [BZOJ2144]国家集训队 跳跳棋
  2. linux 磁盘管理3板斧,Linux 磁盘管理的命令
  3. 一文解开java中字符串编码的小秘密
  4. windows MySQL 5+ 服务手动安装
  5. win2000/2003 Discuz生存环境搭建及基础优化 攻略
  6. 今年蚊子有点慌!有人用100瓶花露水洗澡!
  7. obj 转为Json 时间格式自定义
  8. JVM对象分配和GC分布【JVM】
  9. MIKE水动力笔记8_冷启动与热启动
  10. 大数据服务器环境准备(三台服务)
  11. Android DataBinding 详解
  12. Git如何保留两地并行开发的提交
  13. android中点击空白处隐藏软键盘
  14. 多开分身苹果版_【苹果/安卓】影分身,我们每个人都会!
  15. 最新数据,国内5G手机出货量已超78万部!
  16. HA+LVS 高可用集群
  17. 微信公众号如何开通留言功能?
  18. PS修图台式机装机方案
  19. 《程序员做饭指南》霸榜 GitHub:不仅有量筒、烧杯,还用上了数学公式?
  20. P5:用统一的NLP框架建模推荐系统问题

热门文章

  1. SQL数据库开发知识总结:基础篇
  2. 虚拟现实,带你走进一个不一样的科学探索世界
  3. axios、Vue案例、生命周期
  4. 一文带你读懂无法索取ICPunks NFT的背后原因
  5. 更好的子表单数据填充方式
  6. 比较好看的背景html,一个超炫的Canvas背景,做网页背景挺好看
  7. 微信企业号开发:微信考勤2如何计算距离
  8. 吕鑫老师VS2015系列教程资源
  9. 用Nextcloud搭建个人网盘
  10. php将字母大写转小写,php中字母大小写转换函数_PHP教程 - strtolower