您的位置:首页 > 编程语言 > Python开发

Python依赖管理和打包工具poetry

2019-06-20 18:08 951 查看

poetry简介

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

在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的。

以前是把需要的包和版本全部写在requirements.txt中,使用requirements.txt来进行管理。

即使对于经验丰富的开发者,一个项目总是要同时创建多个包管理的文件才能很好完成包的管理:

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 <sebastien@eustace.io>"
]
license = "MIT"

readme = "README.md"

homepage = "https://poetry.eustace.io/"
repository = "https://github.com
4000
/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 文件
poetry init	#基于已有的项目代码创建 pyproject.toml 文件,支持交互式填写
poetry install	#安装依赖库
poetry update	#更新依赖库
poetry add	#添加依赖库
poetry remove	#移除依赖库
poetry show	#查看具体依赖库信息,支持显示树形依赖链
poetry build	#构建 tar.gz 或 wheel 包
poetry publish	#发布到 PyPI
poetry run	#运行脚本和代码

poetry官网

github

可能遇到的问题–not found file

需要注意的是 文件夹包名需要是与项目名对应,项目名用横杠,文件夹包名用下划线,两者要与toml文件中的项目名相对应。

比如

项目名为 test-project
则文件夹包名为 test_project
toml文件中的项目名也使用横杠的格式 test-project

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: