poetry 是一个包管理和打包的工具。
在Pytho 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。即使对于经验丰富的开发者,一个项目总是要同时创建多个文件:`setup.py`,`requiremets.txt`,`setup.cfg`,`MANIFEST.i`,还有最新的`Pipfile`。
基于此,poetry 将所有的配置都放置在一个toml 文件中,这些配置包括:依赖管理、构建、打包、发布。
poetry 的灵感来自于其他语言的一些工具:composer(PHP) 和cargo(Rust)。
配置poetry 的项目配置文件是pyproject.toml,一个简单的示例文件如下:
[tool.poetry]ame = "poetry"versio = "0.11.5"descriptio = "Pytho depedecy maagemet ad packagig made easy."authors = [ "Sébastie Eustace <sebastie@eustace.io>"]licese = "MIT"readme = "README.md"homepage = "https://poetry.eustace.io/"repository = "https://github.com/sdispater/poet"documetatio = "https://poetry.eustace.io/docs"keywords = ["packagig", "depedecy", "poetry"]classifiers = [ "Topic :: Software Developmet :: Build Tools", "Topic :: Software Developmet :: Libraries :: Pytho Modules"]# Requiremets[tool.poetry.depedecies]pytho = "~2.7 || ^3.4"cleo = "^0.6.7"requests = "^2.18"cachy = "^0.2"requests-toolbelt = "^0.8.0"jsoschema = "^2.6"pyrsistet = "^0.14.2"pyparsig = "^2.2"cachecotrol = { versio = "^0.12.4", extras = ["filecache"] }pkgifo = "^1.4"html5lib = "^1.0"shelligham = "^1.1"tomlkit = "^0.4.4"# The typig module is ot i the stdlib i Pytho 2.7 ad 3.4typig = { versio = "^3.6", pytho = "~2.7 || ~3.4" }# Use pathlib2 for Pytho 2.7 ad 3.4pathlib2 = { versio = "^2.3", pytho = "~2.7 || ~3.4" }# Use virtualev for Pytho 2.7 sice vev does ot existvirtualev = { versio = "^16.0", pytho = "~2.7" }[tool.poetry.dev-depedecies]pytest = "^3.4"pytest-cov = "^2.5"mkdocs = "^1.0"pymdow-extesios = "^4.9"pygmets = "^2.2"pytest-mock = "^1.9"pygmets-github-lexers = "^0.0.5"black = { versio = "^18.3-alpha.0", pytho = "^3.6" }pre-commit = "^1.10"tox = "^3.0"[tool.poetry.scripts]poetry = "poetry.cosole:mai"命令poetry 提供了一系列覆盖整个开发流程的命令,这些命令使用简单:
poetry命令名称功能ew 创建一个项目脚手架,包含基本结构、pyproject.toml 文件iit基于已有的项目代码创建pyproject.toml 文件,支持交互式填写istall安装依赖库update更新依赖库add添加依赖库remove移除依赖库show查看具体依赖库信息,支持显示树形依赖链build构建tar.gz 或wheel 包publish发布到PyPIru运行脚本和代码










评论